Спасибо за ответ. Эта функция у меня реализована. Если user аутентифицирован пропустить если нет ошибка.
А мне нужно: если role: admin то его пускало, а если role: user то не пускало. То есть страница доступна только админу.
Я давно не брал в руки этот стек, но общее направление могу подсказать.
Тебе надо, используя уникальную характеристику пользователя из объекта req.session.user сделать запрос в монгу http://mongoosejs.com/docs/queries.html за документом, описывающим пользоватея и проверить его роль. Похоже, что поле id есть в объекте user http://passportjs.org/docs/authenticate, я предположу что это id документа mongo.
Это не готовое решение, оно строится на моих предположениях выше. Оно больше подсказывает направление.
var adminsModel = require('./admin') // файл, где определена модель 'Admin'
function forAdminsOnly(req, res, next) {
var currentUserId = req.session.user && req.session.user.id
if (!currentUserId) {
return next(new HttpError(401, "Вы не авторизованы"));
}
adminsModel.findOne({_id: currentUserId}, function (err, userDoc) {
if (!userDoc || userDoc.role !== 'admin') {
next(new HttpError(401, "Только админам"));
} else {
next();
}
})
}