Attempting to implement password verification using bcryptjs,
const bcrypt = require('bcryptjs');
login(post){
this.uid = post.uid;
this.pin = post.pin;
this.getUser(this.uid);
if(this.checkUser != undefined && this.pin != undefined){
console.log(this.checkUser)
console.log(this.pin)
console.log(this.checkUser["pin"])
bcrypt.compare(this.checkUser["pin"], this.pin, (err, res) => {
if (err){
console.log("Something went wrong " + err)
// handle error, Wrong password
}
else if (res) {
// Send JWT, Correct password
console.log("It worked! " + res)
// TEMP
sessionStorage.setItem("name", this.checkUser["name"]);
sessionStorage.setItem('loggedin',"true");
location.reload();
//
}
else {
console.log("Something else went wrong!")
}
});
}
}
getUser(uid){
this.BrukerService.getSingle(uid).subscribe((res: String) => {
this.checkUser = JSON.parse(res);
},
(err) => {
this.error = err;
});
}
this.checkUser:
{id: "1", uid: "1234", pin: "$2a$05$7251G35/U5YfLby9oQrqpOA58szCqWEo4lOSLxRmn0HV1nZ4Tn962", created: "2020-12-21 14:28:00", name: "Martin"}
this.pin:
1234
this.checkUser["pin"]:
$2a$05$7251G35/U5YfLby9oQrqpOA58szCqWEo4lOSLxRmn0HV1nZ4Tn962
The checkUser data is fetched from a database, while this.pin represents the correct password for the user. Despite logging the correct hash and pin values, for some reason, bcrypt.compare always falls into the 'else' condition, outputting "Something else went wrong". This leads to confusion as even directly passing the strings into the function doesn't yield the expected result, with 'res' always being false and 'err' turning up as null.