Просмотр исходного кода

create isEnableLoginWithLocalOrLdapMiddleware

Shun Miyazawa 3 лет назад
Родитель
Сommit
3370254ef5

+ 20 - 0
packages/app/src/server/middlewares/is-enable-login-with-local-or-ldap.ts

@@ -0,0 +1,20 @@
+import { NextFunction, Request, Response } from 'express';
+import { ErrorV3 } from '@growi/core';
+
+import loggerFactory from '~/utils/logger';
+
+const logger = loggerFactory('growi:middlewares:is-enable-login-with-local-or-ldap');
+
+
+export const generateIsEnableLoginWithLocalOrLdapMiddleware = crowi => async(req: Request, res: Response, next: NextFunction): Promise<void> => {
+  const passportService = crowi.passportService;
+
+  if (!passportService.isLocalStrategySetup && !passportService.isLdapStrategySetup) {
+    logger.error('LocalStrategy and LdapStrategy has not been set up');
+    const error = new ErrorV3('message.strategy_has_not_been_set_up', '', undefined, { strategy: 'LocalStrategy and LdapStrategy' });
+    return next(error);
+  }
+
+  return next();
+
+};

+ 3 - 1
packages/app/src/server/routes/apiv3/index.js

@@ -1,6 +1,7 @@
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import { generateAddActivityMiddleware } from '../../middlewares/add-activity';
 import { generateAddActivityMiddleware } from '../../middlewares/add-activity';
+import { generateIsEnableLoginWithLocalOrLdapMiddleware } from '../../middlewares/is-enable-login-with-local-or-ldap';
 import injectUserRegistrationOrderByTokenMiddleware from '../../middlewares/inject-user-registration-order-by-token-middleware';
 import injectUserRegistrationOrderByTokenMiddleware from '../../middlewares/inject-user-registration-order-by-token-middleware';
 import * as loginFormValidator from '../../middlewares/login-form-validator';
 import * as loginFormValidator from '../../middlewares/login-form-validator';
 import * as registerFormValidator from '../../middlewares/register-form-validator';
 import * as registerFormValidator from '../../middlewares/register-form-validator';
@@ -44,11 +45,12 @@ module.exports = (crowi, app) => {
   // auth
   // auth
   const applicationInstalled = require('../../middlewares/application-installed')(crowi);
   const applicationInstalled = require('../../middlewares/application-installed')(crowi);
   const addActivity = generateAddActivityMiddleware(crowi);
   const addActivity = generateAddActivityMiddleware(crowi);
+  const isEnableLoginWithLocalOrLdapMiddleware = generateIsEnableLoginWithLocalOrLdapMiddleware(crowi);
   const login = require('../login')(crowi, app);
   const login = require('../login')(crowi, app);
   const loginPassport = require('../login-passport')(crowi, app);
   const loginPassport = require('../login-passport')(crowi, app);
 
 
   routerForAuth.post('/login', applicationInstalled, loginFormValidator.loginRules(), loginFormValidator.loginValidation,
   routerForAuth.post('/login', applicationInstalled, loginFormValidator.loginRules(), loginFormValidator.loginValidation,
-    addActivity, loginPassport.loginWithLocal, loginPassport.loginWithLdap, loginPassport.cannotLoginErrorHadnler, loginPassport.loginFailure);
+    addActivity, isEnableLoginWithLocalOrLdapMiddleware, loginPassport.loginWithLocal, loginPassport.loginWithLdap, loginPassport.cannotLoginErrorHadnler, loginPassport.loginFailure);
 
 
   routerForAuth.use('/invited', require('./invited')(crowi));
   routerForAuth.use('/invited', require('./invited')(crowi));
   routerForAuth.use('/logout', require('./logout')(crowi));
   routerForAuth.use('/logout', require('./logout')(crowi));