invited-form-validator.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { NextFunction, Response } from 'express';
  2. import { body, validationResult, ValidationChain } from 'express-validator';
  3. import { Request } from 'express-validator/src/base';
  4. const MININUM_PASSWORD_LENGTH = 6;
  5. export const invitedRules = (): ValidationChain[] => {
  6. return [
  7. body('invitedForm.username')
  8. .matches(/^[\da-zA-Z\-_.]+$/)
  9. .withMessage('message.Username has invalid characters')
  10. .not()
  11. .isEmpty()
  12. .withMessage('message.Username field is required'),
  13. body('invitedForm.name')
  14. .not()
  15. .isEmpty()
  16. .withMessage('message.Name field is required'),
  17. body('invitedForm.password')
  18. .matches(/^[\x20-\x7F]*$/)
  19. .withMessage('message.Password has invalid character')
  20. .isLength({ min: MININUM_PASSWORD_LENGTH })
  21. .withMessage(`message.Password minimum character should be more than ${MININUM_PASSWORD_LENGTH} characters`)
  22. .not()
  23. .isEmpty()
  24. .withMessage('message.Password field is required'),
  25. ];
  26. };
  27. export const invitedValidation = (req: Request, _res: Response, next: () => NextFunction): any => {
  28. const form = req.body;
  29. const errors = validationResult(req);
  30. const extractedErrors: string[] = [];
  31. if (errors.isEmpty()) {
  32. Object.assign(form, { isValid: true });
  33. }
  34. else {
  35. errors.array().map(err => extractedErrors.push(err.msg));
  36. Object.assign(form, { isValid: false, errors: extractedErrors });
  37. }
  38. req.form = form;
  39. return next();
  40. };