Для вашей переменной промежуточного программного обеспечения вы берете только один параметр group
, где вы предоставляете два в своем вызове needsGroup('member', 'admin')
.Решением было бы сделать этот параметр массивом, чтобы впоследствии можно было обновлять группы без обновления функции.
//user role middleware
var needsGroup = function(groups) {
return [
passport.authenticate('local'),
(req, res, next) => {
if (req.user && groups.indexOf(req.user.role) !== -1)
next();
else {
req.flash('error_msg', 'please subscribe before login');
res.redirect('/users/login');
}
}
]
};
// Login
router.post('/login', needsGroup(['member', 'admin']), (req, res, next) => {
passport.authenticate('local', {
successRedirect: '/dashboard',
failureRedirect: '/users/login',
failureFlash: true
})(req, res, next);
});
Код groups.indexOf(req.user.role) !== -1
просто проверяет, существует ли роль пользователя в переданном массиве (['member', 'admin']
)