Когда я сохраняю пароль, я делаю bcryp.ha sh, и он сохраняет меня в базе данных примерно так, для "1234" => (d1c8912e41fe7ae8f44717c0a2157ab9377b14a7), но когда я вхожу, я использую bcrypt.compare, он возвращает false
добавить пользователя
user: async (_, { input:{firstName, lastName, email, fullName, age, role, login, passwordHash} }, { models: { users } }) => {
let user
try {
user = await users.create({
firstName,
lastName,
email,
fullName,
age,
role,
login,
passwordHash: await bcrypt.hash(passwordHash, 10)
})
} catch (error) {
console.error(error)
}
return user
}
войти в систему пользователя
login: async (_, { input: { email, passwordHash } }, { models: { users } }) => {
const user = await users.findOne({ email })
if (!user) {
throw new Error('No user with that email')
}
const valid = await bcrypt.compare(passwordHash, user.passwordHash)
if (!valid) {
throw new Error('Incorrect password')
}
//return json web token
return jsonwebtoken.sign(
{ id: user._id, email: user.email, role: user.role },
process.env.JWT_SECRET,
{ expiresIn: '1d' }
)
}