jam411 3 лет назад
Родитель
Сommit
9568dea37c

+ 44 - 0
packages/app/src/server/middlewares/invited-form-validator.ts

@@ -0,0 +1,44 @@
+import { body, validationResult } from 'express-validator';
+import { Request } from 'express-validator/src/base';
+
+export const invitedRules = () => {
+  return [
+    body('invitedForm.username')
+      .matches(/^[\da-zA-Z\-_.]+$/)
+      .withMessage('message.Username has invalid characters')
+      .not()
+      .isEmpty()
+      .withMessage('message.Username field is required'),
+    body('invitedForm.name').not().isEmpty().withMessage('message.Name field is required'),
+    body('invitedForm.password')
+      .matches(/^[\x20-\x7F]*$/)
+      .withMessage('message.Password has invalid character')
+      .isLength({ min: 6 })
+      .withMessage('message.Password minimum character should be more than 6 characters')
+      .not()
+      .isEmpty()
+      .withMessage('message.Password field is required'),
+  ];
+};
+
+export const invitedValidation = (req: Request, _res: any, next: () => any) => {
+  const form = req.body;
+
+  const errors = validationResult(req);
+  if (errors.isEmpty()) {
+    Object.assign(form, { isValid: true });
+    req.form = form;
+    return next();
+  }
+
+  const extractedErrors: string[] = [];
+  errors.array().map(err => extractedErrors.push(err.msg));
+
+  Object.assign(form, {
+    isValid: false,
+    errors: extractedErrors,
+  });
+  req.form = form;
+
+  return next();
+};

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

@@ -49,12 +49,13 @@ module.exports = (crowi, app, isInstalled) => {
   routerForAuth.post('/login', applicationInstalled, loginFormValidator.loginRules(), loginFormValidator.loginValidation,
     addActivity, loginPassport.loginWithLocal, loginPassport.loginWithLdap, loginPassport.cannotLoginErrorHadnler, loginPassport.loginFailure);
 
+  routerForAuth.use('/invited', require('./invited')(crowi));
   routerForAuth.use('/logout', require('./logout')(crowi));
-  routerForAuth.use('/invited', require('./invited')(crowi, app));
 
   routerForAuth.post('/register',
     applicationInstalled, registerFormValidator.registerRules(), registerFormValidator.registerValidation, addActivity, login.register);
 
+
   // installer
   if (!isInstalled) {
     routerForAdmin.use('/installer', require('./installer')(crowi));

+ 1 - 43
packages/app/src/server/routes/apiv3/invited.ts

@@ -1,7 +1,7 @@
 import express, { Request, Router } from 'express';
-import { body, validationResult } from 'express-validator';
 
 import Crowi from '../../crowi';
+import { invitedRules, invitedValidation } from '../../middlewares/invited-form-validator';
 
 import { ApiV3Response } from './interfaces/apiv3-response';
 
@@ -13,48 +13,6 @@ module.exports = (crowi: Crowi): Router => {
   const User = crowi.model('User');
   const router = express.Router();
 
-  const invitedRules = () => {
-    return [
-      body('invitedForm.username')
-        .matches(/^[\da-zA-Z\-_.]+$/)
-        .withMessage('message.Username has invalid characters')
-        .not()
-        .isEmpty()
-        .withMessage('message.Username field is required'),
-      body('invitedForm.name').not().isEmpty().withMessage('message.Name field is required'),
-      body('invitedForm.password')
-        .matches(/^[\x20-\x7F]*$/)
-        .withMessage('message.Password has invalid character')
-        .isLength({ min: 6 })
-        .withMessage('message.Password minimum character should be more than 6 characters')
-        .not()
-        .isEmpty()
-        .withMessage('message.Password field is required'),
-    ];
-  };
-
-  const invitedValidation = (req, res, next) => {
-    const form = req.body;
-
-    const errors = validationResult(req);
-    if (errors.isEmpty()) {
-      Object.assign(form, { isValid: true });
-      req.form = form;
-      return next();
-    }
-
-    const extractedErrors: string[] = [];
-    errors.array().map(err => extractedErrors.push(err.msg));
-
-    Object.assign(form, {
-      isValid: false,
-      errors: extractedErrors,
-    });
-    req.form = form;
-
-    return next();
-  };
-
   router.post('/invited', applicationInstalled, invitedRules(), invitedValidation, async(req: InvitedFormRequest, res: ApiV3Response) => {
     if (!req.user) {
       return res.apiv3({ redirectTo: '/login' });