bcrypt.js
bcrypt.js copied to clipboard
Bcrypt compare always return false
const messageController = require('@service').message; const { v4: uuidv4 } = require('uuid'); const _User = require('@model').User; const bcrypt = require('bcryptjs');
class User { async register(req, res) { let { email, firstName, lastName, password, age } = req.body if (!email || !firstName || !lastName || !password || !age) { return res.status(400).send(messageController(400)) }; let checkUser = await _User.findOne({ where: { email } }) if (checkUser) return res.status(409).send(messageController(409)); let hashedPassword = await bcrypt.hash(password, 12); try { let createUser = await _User.create({ id: uuidv4(), email, firstName, lastName, password: hashedPassword, age }) if (createUser) return res.status(201).send(messageController(201)); return res.status(422).send(messageController(422)); } catch (error) { return res.status(500).send(messageController(500)); } }
async login(req, res) { let { email, password } = req.body if (!email || !password) { return res.status(400).send(messageController(400)) }; let findUser = await _User.findOne({ where: { email } }); if (!findUser) return res.status(404).send(messageController(404, 'User Not Found', 'کاربری با این مشخصات یافت نشد')); let hashedPasswordCheck = await bcrypt.compare(password, findUser.dataValues.password) console.log(hashedPasswordCheck); if (!hashedPasswordCheck) return res.status(401).send(messageController(401)); console.log("after", hashedPasswordCheck); } }
module.exports = User;
It always returns me as false but the code is true
const messageController = require('@service').message; const { v4: uuidv4 } = require('uuid'); const _User = require('@model').User; const bcrypt = require('bcryptjs');
class User { async register(req, res) { let { email, firstName, lastName, password, age } = req.body if (!email || !firstName || !lastName || !password || !age) { return res.status(400).send(messageController(400)) }; let checkUser = await _User.findOne({ where: { email } }) if (checkUser) return res.status(409).send(messageController(409)); let hashedPassword = await bcrypt.hash(password, 12); try { let createUser = await _User.create({ id: uuidv4(), email, firstName, lastName, password: hashedPassword, age }) if (createUser) return res.status(201).send(messageController(201)); return res.status(422).send(messageController(422)); } catch (error) { return res.status(500).send(messageController(500)); } }
async login(req, res) { let { email, password } = req.body if (!email || !password) { return res.status(400).send(messageController(400)) }; let findUser = await _User.findOne({ where: { email } }); if (!findUser) return res.status(404).send(messageController(404, 'User Not Found', 'کاربری با این مشخصات یافت نشد')); let hashedPasswordCheck = await bcrypt.compare(password, findUser.dataValues.password) console.log(hashedPasswordCheck); if (!hashedPasswordCheck) return res.status(401).send(messageController(401)); console.log("after", hashedPasswordCheck); } }
module.exports = User;
It always returns me as false but the code is true
It does not make sense I know but remove await
and it should work
let hashedPasswordCheck = bcrypt.compare(password, findUser.dataValues.password)
Though signature of compare is function compare(s: string, hash: string): Promise<boolean>
, I hope someone can explain why these last days it fails with await
, while in the past it worked well.
DO NOT REMOVE AWAIT. IF you do this, it will return a promise which will always be true. Any password will work in that situation.
Thank you for your time. The issue stemmed from the version I had installed. A previous version was functioning properly, and it's possible that they have since updated and rectified the problem.
I have that issue ultimately. I dont know why. Because the issue ocurrs suddenly without any explanation meanwhile I was developing my software. In the begging works well, but I don´t know why stop working
Also on my code compare() returns always true and compareSync() returns always false. In my previous applications it was working fine and now its not functioning..