const db = require("../models"); const dev = require("deep-email-validator"); const ROLES = db.ROLES; const User = db.user; checkDuplicateUsernameOrEmail = (req, res, next) => { // Username User.findOne({ username: req.body.username }).exec((err, user) => { if (err) { res.status(500).send({ message: err }); return; } if (user) { res.status(400).send({ message: "oof! ce nom d'utilisateur est déjà utilisé" }); return; } // Email User.findOne({ email: req.body.email }).exec((err, user) => { if (err) { res.status(500).send({ message: err }); return; } if (user) { res.status(400).send({ message: "oof! cette addresse courriel est déjà utilisé" }); return; } next(); }); }); }; checkRolesExisted = (req, res, next) => { if (req.body.roles) { for (let i = 0; i < req.body.roles.length; i++) { if (!ROLES.includes(req.body.roles[i])) { res.status(400).send({ message: `oof! ce role ${req.body.roles[i]} n'existe pas` }); return; } } } next(); }; validateEmail = async (req, res, next) => { if (req.body.email) { const emailRes = await dev.validate({ email: req.body.email, sender: req.body.email, validateRegex: true, valideMx: true, validateTypo: true, validateDisposable: true, validateSMTP: false, }) console.log((emailRes.valid)) if (!emailRes.valid) { res.status(400).send({ message: "oof! ton email est pas valide loco" }); return; } } next(); }; checkPassLimit = (req, res, next) => { function isUpperCase(str) { return str === str.toUpperCase(); } if (req.body.password) { if (req.body.password.length <= 8) { res.status(400).send({ message: "oof! ce password ne respecte pas la longueur minimal." }); return; } else { var upper = 0; for (let c of req.body.password) { if (isUpperCase(c)) { upper = 1; } } if (upper != 1) { res.status(400).send({ message: "oof! ce password n'a aucune majuscule." }); return; } } } next(); }; const verifySignUp = { checkDuplicateUsernameOrEmail, checkRolesExisted, validateEmail, checkPassLimit }; module.exports = verifySignUp;