Доброе утро.Скажите пожалуйста,почему при одинаковых данных паспорт не авторизует пользователя?
Я вывожу в консоль следующее:
При корректной авторизации:
console.log(userDB.email[0]) - John@mail.ru
При некорректной авторизации:
console.log(userDB.password[0]) - Hancock
И перед проверками:
console.log(email + '/' + password) //входящие данные
console.log(userDB.email[0] + '/' + userDB.password[0]) //данные из бд
В консоли получаю это:
John@mail.ru/Hancock //Входящие данные
John@mail.ru/Hancock //Данные из бд
Hancock //Некорректная авторизация
Вот код:
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const Sequelize = require('sequelize');
// Option 1: Passing parameters separately
const sequelize = new Sequelize('test', 'root', '', {
host: 'localhost',
dialect: 'mysql',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
// dialectOptions: {
// socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock',
// supportBigNumbers: true,
// bigNumberStrings: true
// },
});
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
const User = sequelize.define('users', {
// attributes
email: {
type: Sequelize.STRING,
allowNull: false
},
password: {
type: Sequelize.STRING
// allowNull defaults to true
}
}, {
// options
});
let userDB = null;
sequelize
.query('SELECT * FROM users', { raw: true })
.then(users => {
const isIds = users[0].map(user => user.id);
const isEmails = users[0].map(user => user.email);
const isPasswords = users[0].map(user => user.password);
userDB = {
id: isIds,
email: isEmails,
password: isPasswords
}
});
passport.serializeUser(function(user, done) {
console.log("Serialize: ", user);
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
/*User.findById(id, function(err, user) {
done(err, user);
});*/
console.log("Deserialize: ", id);
user = (userDB.id[0] === id) ? userDB : false;
done(null, user);
});
passport.use(new LocalStrategy(
{usernameField: 'email'},
function(email, password, done) {
console.log(email + '/' + password)
console.log(userDB.email[0] + '/' + userDB.password[0])
if(email === userDB.email[0] && password === userDB.password[0]) {
console.log(userDB.email[0])
return done(null,userDB)
}
else {
console.log(userDB.password[0])
return done(null,false)
}
})
);