Karena Anda tidak seharusnya menyimpan kata sandi biasa di database Anda, tidak masuk akal untuk memvalidasi kata sandi di database. Karena Anda harus meng-hash kata sandi terlebih dahulu dan kemudian menyimpannya. kata sandi hash akan menjadi string kompleks yang kemungkinan besar akan lolos validasi untuk disimpan dalam database.
Jadi, Anda harus memvalidasi kata sandi di sisi klien. untuk ini Anda dapat menggunakan paket joi npm.
https://www.npmjs.com/package/@hapi/joi
ini adalah bagaimana Anda dapat menerapkannya.
userModel.js //harus ada di folder model
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;
saya akan mendemonstrasikan cara menggunakan fungsi ini di dalam router pos.
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
});