isPasswordValid всегда возвращает false

115
12

Я пытаюсь добавить логин к моему экспресс-коду, но, похоже, он всегда isPassword = false, но письмо является истинным, поэтому я не могу войти в систему, я все еще смущен, чтобы использовать bycript-nodejs. я думаю, что он поддерживается узлом

Вот мой контроллер

 const { response } = require('../helpers/index');
const { users: User } = require('../models/index');
const axios = require('axios');
const config = require('../config/config');
const jwtS = require('../config/configJwt')
const jwt = require('jsonwebtoken')
const Sequelize = require('sequelize');
const { Op } = Sequelize;

const jwtSignUser = (user) => {
const ONE_WEEK = 60 * 60 * 24 * 7
return jwt.sign(user, jwtS.authentication.jwtSecret, {
expiresIn: ONE_WEEK
})
}
module.exports = {
async register(req, res) {
try {
const user = await User.create(req.body)
const userJson = user.toJSON()
res.send({
user: userJson,
token: jwtSignUser(userJson)
})
}
catch (err) {
res.status(400).send({
error: err

})
}
},

async login(req, res) {
try {
const { email, password } = req.body
const user = await User.findOne({
where: {
email: email
}
})

if (!user) {
return res.status(403).send({
error: err + 'The login user information was incorrect'
})
}
const isPasswordValid = await user.comparePassword(password)
if (!isPasswordValid) {
console.log(isPasswordValid)
return res.status(403).send({
error: 'The login password information was incorrect'
})
}

const userJson = user.toJSON()
res.send({
user: userJson,
token: jwtSignUser(userJson)
})
} catch (err) {
res.status(500).send({
error: 'An error has occured trying to log in'
})
}

}
}

И вот моя модель баз данных, я думаю, что базы данных правильные и мне не нужно разрешать в базах данных:

 'use strict';
const Promise = require('bluebird')
const bcrypt = Promise.promisifyAll(require("bcrypt-nodejs"))

function hashPassword(user, options) {
const SALT_FACTOR = 8

if (!user.changed("password")) {
return
}

return bcrypt
.genSaltAsync(SALT_FACTOR)
.then(salt => bcrypt.hashSync(user.password, salt, null))
.then(hash => {
user.setDataValue('password', hash)
})
}
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('users', {
full_name: {
type: DataTypes.STRING,
allowNull: false,
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique : true,
},
password: {
type: DataTypes.STRING,
allowNull: false,
},
phone: {
type: DataTypes.STRING,
allowNull: false,
},
}, {
hooks :{
beforeCreate: hashPassword,
beforeUpdate: hashPassword,
beforeSave:hashPassword
}
});

User.prototype.comparePassword = function(password){
return bcrypt.compareSync(password, this.password)
}

User.associate = (models) => {
User.hasMany(models.authors, {
foreignKey: 'user_id',
onDelete: 'CASCADE'
});
};

return User;
};

Не могли бы вы, ребята, помочь мне решить мою проблему, большое вам спасибо за вашу помощь?

спросил(а) 2018-08-12T11:51:00+03:00 2 года, 8 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема