Spaces:
Runtime error
Runtime error
| import { checkSchema } from 'express-validator'; | |
| import User from '../models/users'; | |
| import Role from '../models/roles'; | |
| import { Op } from 'sequelize'; | |
| const validateUser = checkSchema({ | |
| name: { | |
| notEmpty: { | |
| errorMessage: 'Name is required', | |
| }, | |
| }, | |
| email: { | |
| notEmpty: { | |
| errorMessage: 'Email is required', | |
| }, | |
| isEmail: { | |
| errorMessage: 'Invalid email address', | |
| }, | |
| custom: { | |
| options: async (value) => { | |
| const ifUserExists = await User.findOne({ where: { email: value } }); | |
| if (ifUserExists) { | |
| return Promise.reject('User already exists'); | |
| } | |
| }, | |
| }, | |
| }, | |
| password: { | |
| notEmpty: { | |
| errorMessage: 'Password is required', | |
| }, | |
| isLength: { | |
| options: { min: 8 }, | |
| errorMessage: 'Password must be at least 8 characters long', | |
| }, | |
| }, | |
| status: { | |
| notEmpty: { | |
| errorMessage: 'Status is required', | |
| }, | |
| }, | |
| role_id: { | |
| notEmpty: { | |
| errorMessage: 'Role ID is required', | |
| }, | |
| custom: { | |
| options: async (value) => { | |
| const role = await Role.findByPk(value); | |
| if (!role) { | |
| return Promise.reject('Role ID is invalid'); | |
| } | |
| }, | |
| }, | |
| }, | |
| }); | |
| const validateUserUpdate = checkSchema({ | |
| email: { | |
| optional: true, | |
| isEmail: { | |
| errorMessage: 'Invalid email address', | |
| }, | |
| custom: { | |
| options: async (value, { req }: { req: any}) => { | |
| const id = req.params.id; | |
| const ifUserExists = await User.findOne({ | |
| where: { | |
| email: value, | |
| id: { [Op.ne]: id } | |
| } | |
| }); | |
| if (ifUserExists) { | |
| return Promise.reject('User already exists'); | |
| } | |
| }, | |
| }, | |
| }, | |
| role_id: { | |
| optional: true, | |
| custom: { | |
| options: async (value) => { | |
| const role = await Role.findByPk(value); | |
| if (!role) { | |
| return Promise.reject('Role ID is invalid'); | |
| } | |
| }, | |
| }, | |
| }, | |
| password: { | |
| optional: true, | |
| isLength: { | |
| options: { min: 8 }, | |
| errorMessage: 'Password must be at least 8 characters long', | |
| }, | |
| }, | |
| }); | |
| export { validateUser, validateUserUpdate }; |