|
|
@@ -334,6 +334,40 @@ class PassportService {
|
|
|
debug('GitHubStrategy: setup is done');
|
|
|
}
|
|
|
|
|
|
+ setupTwitterStrategy() {
|
|
|
+ // check whether the strategy has already been set up
|
|
|
+ if (this.isTwitterStrategySetup) {
|
|
|
+ throw new Error('TwitterStrategy has already been set up');
|
|
|
+ }
|
|
|
+
|
|
|
+ const config = this.crowi.config;
|
|
|
+ const Config = this.crowi.model('Config');
|
|
|
+ //this
|
|
|
+ const isTwitterEnabled = Config.isEnabledPassportTwitter(config);
|
|
|
+
|
|
|
+ // when disabled
|
|
|
+ if (!isTwitterEnabled) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ debug('TwitterStrategy: setting up..');
|
|
|
+ passport.use(new TwitterStrategy({
|
|
|
+ clientID: config.crowi['security:passport-twitter:clientId'] || process.env.OAUTH_TWITTER_CLIENT_ID,
|
|
|
+ clientSecret: config.crowi['security:passport-twitter:clientSecret'] || process.env.OAUTH_TWITTER_CLIENT_SECRET,
|
|
|
+ callbackURL: config.crowi['security:passport-twitter:callbackUrl'] || process.env.OAUTH_TWITTER_CALLBACK_URI,
|
|
|
+ skipUserProfile: false,
|
|
|
+ }, function(accessToken, refreshToken, profile, done) {
|
|
|
+ if (profile) {
|
|
|
+ return done(null, profile);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return done(null, false);
|
|
|
+ }
|
|
|
+ }));
|
|
|
+
|
|
|
+ this.isTwitterStrategySetup = true;
|
|
|
+ debug('TwitterStrategy: setup is done');
|
|
|
+ }
|
|
|
/**
|
|
|
* reset GoogleStrategy
|
|
|
*
|