Files
le-journal-d-un-podcast/app/middlewares/verifySignUp.js
T
2023-05-31 21:38:45 -04:00

122 lines
2.5 KiB
JavaScript

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;