Я создаю проект, используя Express. js и аутентификацию с помощью Passport. JS. Я могу выполнить аутентификацию пользователя для одного типа пользователя в Passport. JS. Однако я не могу выполнить эту аутентификацию для двух типов пользователей (обычных пользователей и администратора). Я попытался использовать объект ролей для сопоставления до того, как можно было вызвать настраиваемый маршрут, но не понимаю, как это сделать (плюс это не сработало). Буду признателен за помощь в решении этой проблемы. Это моя авторизация. js файл:
Моя авторизация. js файл:
module.exports = {
ensureAuthenticated: function(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
req.flash('error_msg', 'Please log in to view that resource');
res.redirect('/users/login');
},
forwardAuthenticated: function(req, res, next) {
if (!req.isAuthenticated()) {
return next();
}
res.redirect('/dashboard');
}
};
Мой паспорт. JS файл:
const LocalStrategy = require('passport-local').Strategy;
const bcrypt = require('bcryptjs');
// Load User model
const User = require('../models/User');
module.exports = function(passport) {
passport.use(
new LocalStrategy({ usernameField: 'email' }, (email, password, done) => {
// Match user
User.findOne({
email: email
}).then(user => {
if (!user) {
return done(null, false, { message: 'That email is not registered' });
}
// Match password
bcrypt.compare(password, user.password, (err, isMatch) => {
if (err) throw err;
if (isMatch) {
return done(null, user);
} else {
return done(null, false, { message: 'Password incorrect' });
}
});
});
})
);
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
};
Ссылка на мой полный код: https://github.com/Temybroder/sealedapp