Я пытаюсь сравнить пароль, используя метод сравнения 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);
}
})
})
}