Browse Source

reset/setup local strategy

Yuki Takei 6 years ago
parent
commit
b8665afc1c

+ 1 - 1
src/server/crowi/index.js

@@ -286,8 +286,8 @@ Crowi.prototype.setupPassport = async function() {
   }
   }
   this.passportService.setupSerializer();
   this.passportService.setupSerializer();
   // setup strategies
   // setup strategies
-  this.passportService.setupLocalStrategy();
   try {
   try {
+    this.passportService.setupLocalStrategy();
     this.passportService.setupLdapStrategy();
     this.passportService.setupLdapStrategy();
     this.passportService.setupGoogleStrategy();
     this.passportService.setupGoogleStrategy();
     this.passportService.setupGitHubStrategy();
     this.passportService.setupGitHubStrategy();

+ 6 - 0
src/server/routes/login-passport.js

@@ -199,6 +199,12 @@ module.exports = function(crowi, app) {
    * @param {*} next
    * @param {*} next
    */
    */
   const loginWithLocal = (req, res, next) => {
   const loginWithLocal = (req, res, next) => {
+    if (!passportService.isLocalStrategySetup) {
+      debug('LocalStrategy has not been set up');
+      req.flash('warningMessage', 'LocalStrategy has not been set up');
+      return next();
+    }
+
     if (!req.form.isValid) {
     if (!req.form.isValid) {
       return res.render('login', {
       return res.render('login', {
       });
       });

+ 9 - 0
src/server/service/passport.js

@@ -105,6 +105,15 @@ class PassportService {
       throw new Error('LocalStrategy has already been set up');
       throw new Error('LocalStrategy has already been set up');
     }
     }
 
 
+    const { configManager } = this.crowi;
+
+    const isEnabled = configManager.getConfig('crowi', 'security:passport-local:isEnabled');
+
+    // when disabled
+    if (!isEnabled) {
+      return;
+    }
+
     debug('LocalStrategy: setting up..');
     debug('LocalStrategy: setting up..');
 
 
     const User = this.crowi.model('User');
     const User = this.crowi.model('User');