Ошибка bcrypt «data и ha sh должны быть строками» во время проверки логина - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь сравнить пароль, используя метод сравнения bcrypt, при этом возникает ошибка «data and ha sh должны быть строками». ниже приведен метод сравнения пароля, который я вызываю с контроллера.

let comparePassword = (oldPassword, hashpassword, cb) => {
  bcrypt.compare(oldPassword, hashpassword, (err, res) => {
    if (err) {
      logger.error(err.message, 'Comparison Error', 5)
      cb(err, null)
    } else {
      cb(null, res)
    }
  })
}

код контроллера -

let validatePassword=(retrievedUserDetails)=>{
         console.log("Validate password");
         return new Promise((resolve,reject)=>{
           passwordLib.comparePassword(req.body.password,retrievedUserDetails.password,(err,isMatch)=>{
               if(err){
                   logger.error(err.message,"userController:validatePassword",5);
                   let apiResponse=response.generate(true,"Login Failed",500,null);
                   reject(apiResponse);
               }
               else if(isMatch){
                   let retrievedUserDetailsObj=retrievedUserDetails.toObject();
                   delete retrievedUserDetailsObj.password;
                   delete retrievedUserDetailsObj._id;
                   delete retrievedUserDetailsObj.__v;
                   delete retrievedUserDetailsObj.createdOn;
                   resolve(retrievedUserDetailsObj);
               }
               else{
                   logger.info('Login Failed Due To Invalid Password', 'userController: validatePassword()', 10);
                   let apiResponse=response.generate(true,"Wrong password",400,null);
                   reject(apiResponse);
               }
           })
         })
     }
...