Я строю систему, которая требует много пользователей. Пользователи принадлежат к разным группам. У каждой группы есть массив, который содержит их разрешения (например, «homepage»: «rw», «profile»: «rw»). Каков наилучший способ реализовать это в моем коде, думая о поддержке?
Только пользователи с разрешением «владелец» могут удалить.
Вот маршрут моего пользователя:
app.route('/users/delete/:userId').put(users.delete);
app.route('/users').get(users.checkUser, users.list);
(удаление маршрута фактически изменяет состояние «статуса» у пользователя, поэтому запрос «PUT»). Например, все пользователи вызывают checkUser.
Я думаю о создании промежуточного программного обеспечения на каждом защищенном маршруте и выполнении его, но этот подход имеет несколько проблем, которые необходимо поддерживать.
Вот мой пользовательский контроллер, который проверяет токен JWT, переданный от пользователя:
exports.checkUser = function (req, res, next) {
passport.authenticate('jwt', { session: false }, (err, user, info) => {
if (err) {
console.log(err);
return next(err);
}
if (!user) {
console.log("Não autenticado");
return res.sendStatus(403);
} else {
console.log("Autenticado");
return next();
}
})(req, res, next);
};
У кого-нибудь есть советы?