Здравствуйте. Я создаю систему аутентификации. При регистрации я получаю эти значения в виде ответа: -
{
"isVerified": false,
"_id": "5c3f0f4086a0b583407a5f9",
"fullName": "XYZ",
"email": "xyz@xyz.com",
"password": "$2a$10$ItdTDSa5QQBYQweQrMWc.5o8N8STD/HiYN2qNb53iN1YQ6KXV/dy",
"phoneNumber": "99165631",
"emailResetToken": "62e5c96fdbcad3fec8b10badb51b259376cacf9cd0b73dff3c45d3ebe9a68d29",
"emailExpires": "2019-01-16T17:02:24.525Z",
"saltSecret": "$2a$10$ItdTDSa5BYQweQrMWc.",
"__v": 0
}
Итак, отсюда я могу подтвердить адрес электронной почты, установив значение по умолчанию isVerified
false как true
Теперь у меня проблема с маршрутом /login
для создания условия. Если isVerified
равно true , тогда пользователь может войти в систему.
/ Логин: -
router.post('/login' , (req, res, next) => {
User.find({email: req.body.email})
.exec()
.then(user => {
if(user.length < 1) {
return res.status(401).json({
message: "Auth failed. User not found."
})
}
bcrypt.compare(req.body.password, user[0].password, (err, result) =>{
if (err) {
return res.status(401).json({
message: "Auth failed. Check email and password"
});
}
if(!result && user[0].isVerified === false){
return res.json({
message: "User's account is not verified."
});
}
if (result && user[0].isVerified === true){
const adminEmail = "xyz@xyz.com";
const role = user[0].email===adminEmail? "admin" : "user";
const token = jwt.sign(
{
email: user[0].email,
userId: user[0]._id,
phoneNo: user[0].phoneNumber,
role
},
process.env.JWT_KEY,
{
expiresIn : "1h"
});
return res.status(200).json({
message: "Auth Successful",
token : token
});
}
});
})
.catch(err =>{
if (err.code == 500)
res.status(500).send(["Something went wrong in login"]);
else
return next(err);
});
});
Я не могу войти здесь. Куда я иду не так?