|
|
@@ -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' });
|