jam411 3 лет назад
Родитель
Сommit
219caafc3c

+ 3 - 7
packages/app/src/components/InvitedForm.tsx

@@ -54,13 +54,9 @@ export const InvitedForm = (props: InvitedFormProps): JSX.Element => {
       <>
         { loginErrors != null && loginErrors.length > 0 ? (
           <p className="alert alert-danger">
-            {loginErrors.map((err, index) => {
-              return (
-                <span key={index}>
-                  {t(err.message)}<br/>
-                </span>
-              );
-            })}
+            { loginErrors.map((err, index) => {
+              return <span key={index}>{ t(err.message) }<br/></span>;
+            }) }
           </p>
         ) : (
           <p className="alert alert-success">

+ 13 - 18
packages/app/src/server/middlewares/invited-form-validator.ts

@@ -1,8 +1,10 @@
-import { body, validationResult } from 'express-validator';
+import { NextFunction, Response } from 'express';
+import { body, validationResult, ValidationChain } from 'express-validator';
 import { Request } from 'express-validator/src/base';
 
-// form rules
-export const invitedRules = () => {
+const MININUM_PASSWORD_LENGTH = 6;
+
+export const invitedRules = (): ValidationChain[] => {
   return [
     body('invitedForm.username')
       .matches(/^[\da-zA-Z\-_.]+$/)
@@ -17,34 +19,27 @@ export const invitedRules = () => {
     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')
+      .isLength({ min: MININUM_PASSWORD_LENGTH })
+      .withMessage(`message.Password minimum character should be more than ${MININUM_PASSWORD_LENGTH} characters`)
       .not()
       .isEmpty()
       .withMessage('message.Password field is required'),
   ];
 };
 
-// validation action
-export const invitedValidation = (req, _res, next) => {
+export const invitedValidation = (req: Request, _res: Response, next: () => NextFunction): any => {
   const form = req.body;
-
   const errors = validationResult(req);
+  const extractedErrors: string[] = [];
 
   if (errors.isEmpty()) {
     Object.assign(form, { isValid: true });
-    req.form = form;
-    return next();
+  }
+  else {
+    errors.array().map(err => extractedErrors.push(err.msg));
+    Object.assign(form, { isValid: false, errors: extractedErrors });
   }
 
-  const extractedErrors: string[] = [];
-  errors.array().map(err => extractedErrors.push(err.msg));
-
-  Object.assign(form, {
-    isValid: false,
-    errors: extractedErrors,
-  });
   req.form = form;
-
   return next();
 };

+ 4 - 7
packages/app/src/server/routes/apiv3/invited.ts

@@ -28,8 +28,7 @@ module.exports = (crowi: Crowi): Router => {
       // check user upper limit
       const isUserCountExceedsUpperLimit = await User.isUserCountExceedsUpperLimit();
       if (isUserCountExceedsUpperLimit) {
-        // req.flash('warningMessage', req.t('message.can_not_activate_maximum_number_of_users'));
-        return res.apiv3({ redirectTo: '/invited' });
+        return res.apiv3Err('message.can_not_activate_maximum_number_of_users', 403);
       }
 
       const creatable = await User.isRegisterableUsername(username);
@@ -39,18 +38,16 @@ module.exports = (crowi: Crowi): Router => {
           return res.apiv3({ redirectTo: '/' });
         }
         catch (err) {
-          // req.flash('warningMessage', req.t('message.failed_to_activate'));
-          return res.render('invited');
+          return res.apiv3Err('message.failed_to_activate', 403);
         }
       }
       else {
-        // req.flash('warningMessage', req.t('message.unable_to_use_this_user'));
         debug('username', username);
-        return res.render('invited');
+        return res.apiv3Err('message.unable_to_use_this_user', 403);
       }
     }
     else {
-      return res.render('invited');
+      return res.apiv3Err(400);
     }
   });