Логин не отвечает после подтверждения электронной почты - PullRequest
0 голосов
/ 16 января 2019

Здравствуйте. Я создаю систему аутентификации. При регистрации я получаю эти значения в виде ответа: -

{
    "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);
    });
});

Я не могу войти здесь. Куда я иду не так?

...