Étant donné que vous n'êtes pas censé enregistrer le mot de passe en clair dans votre base de données, cela n'a aucun sens de valider le mot de passe dans la base de données. Parce que vous devez d'abord hacher le mot de passe, puis l'enregistrer. le mot de passe haché sera une chaîne complexe qui passera très probablement la validation pour être enregistré dans la base de données.
Vous devez donc valider le mot de passe côté client. pour cela, vous pouvez utiliser le package joi npm.
https://www.npmjs.com/package/@hapi/joi
voici comment vous pouvez l'implémenter.
userModel.js //doit être dans le dossier des modèles
const Joi = require('@hapi/joi');
const mongoose = require("mongoose");
//you defined your schema above, it should be **lowercase**
//here is the model, model should start capital letter
const User=mongoose.model("User",userSchema)
function validateUser(user) {
const schema = Joi.object().keys({
email: Joi.string()
.min(8)
.max(50)
.required()
.email(),
password: Joi.string()
.min(6)
.required()
.max(20)
.regex(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,1024}$/) //special/number/capital
});
return Joi.validate(user, schema);
}
module.exports.User = User;
module.exports.validate = validateUser;
je vais vous montrer comment utiliser cette fonction dans un post-routeur.
userRoute.js
//import model and validate func
const { User, validate } = require("/models/user");
router.post("/", async (req, res) => {
//validating the request here
const { error } = validate(req.body);
if (error) res.status(400).send(error.details[0].message);
//i used this code to show you how to use validate function
//i am not sure what is your project about
});