const Joi = require('joi'); const constants = require('../constants'); const { NAME_MIN, NAME_MAX } = constants; const schema = Joi.object().keys({ name: Joi.string() .min(NAME_MIN) .max(NAME_MAX) .required(), username: Joi.string().email({ minDomainAtoms: 2 }), }); async function validateRegisterPayload(req, res, next) { let payloadValidation; try { payloadValidation = await Joi.validate(req.body, schema, { abortEarly: false }); } catch (validateRegisterError) { payloadValidation = validateRegisterError; } const { details } = payloadValidation; let errors; if (details) { errors = {}; details.forEach(errorDetail => { const { message, path: [key], type, } = errorDetail; const errorType = type.split('.')[1]; errors[key] = constants[`${key.toUpperCase()}_${errorType.toUpperCase()}_ERROR`] || message; }); } if (errors) { req.session.messages = { errors }; return res.status(400).redirect('/profile'); } return next(); } module.exports = validateRegisterPayload;