En mi proyecto, tengo diferentes roles (vendedor/usuario/administrador) y quiero verificar el rol y redirigir a una página específica si son vendedores, por ejemplo.
Lucho por saber cómo puedo verificar el rol en Mongo DB antes del inicio de sesión. Mi página de inicio de sesión es una contraseña de correo electrónico básica y un botón de envío.
para mi registro, todo está bien, es usar el modelo correcto y publicarlo en la base de datos.
Aquí hay algunas piezas de mi código:
(modelo de cliente)
userSchema.statics.login = async function (email, password, role) { const user = await this.findOne({ email }); if (user) { const auth = await bcrypt.compare(password, user.password); if (auth) { return user; } throw Error("incorrect password"); } throw Error("incorrect email"); }; const ClientModel = mongoose.model("client", userSchema, "users");controlador de inicio de sesión:
module.exports.clientSignIn = async (req, res) => { const { email, password } = req.body; try { const user = await LoginModel.login(email, password); const token = createToken(user._id); res.cookie("jwt", token, { httpOnly: true, maxAge }); res.redirect('/success'); } catch (err) { console.log(err.message); } };gracias de antemano por su ayuda, si necesita más información no dude en preguntar
Siguiendo los consejos de @EAzevedo.
acabo de cambiar mi controlador
module.exports.clientSignIn = async (req, res) => { const { email, password } = req.body; try { const user = await LoginModel.login(email, password); const token = createToken(user._id); res.cookie("jwt", token, { httpOnly: true, maxAge }); if (user.role == "client") { res.redirect("/success"); } else if (user.role == "technicien") { res.redirect("/success-technicien"); } else if (user.role == "superuser") { res.redirect("/success-admin"); }; } catch (err) { const errors = signInErrors(err); res.status(200).json({ errors }); } };cuando obtenga el usuario, debe tener un campo para el rol, luego verifique qué rol inició sesión y rediríjalo a donde debe estar