我正在使用generator-angular-fullstack,我希望能够添加一个类型的新角色:'collaborator'。
然后在他/她可以删除或更新'api / things'之前检查登录用户是否具有协作者角色。但是,如果他们想要获取或创建新事物,他们就可以与任何其他角色一起完成。
我一直在尝试各种不同的方式,但没有运气。
答案 0 :(得分:2)
在您的server / api / someAPI / index.js文件中根据需要添加auth.hasRole('collaborator')
,如下所示:
router.get('/', controller.index);
router.post('/', controller.create);
router.put('/:id', auth.hasRole('collaborator'), controller.update);
router.delete('/:id', auth.hasRole('collaborator'), controller.destroy);
然后在你的server / auth / auth.service.js中确保你有这样的东西:
function hasRole(roleRequired) {
if (!roleRequired) {
throw new Error('Required role needs to be set');
}
return (0, _composableMiddleware2.default)().use(isAuthenticated()).use(function meetsRequirements(req, res, next) {
if (_environment2.default.userRoles.indexOf(req.user.role) <= _environment2.default.userRoles.indexOf(roleRequired)) {
next();
} else {
res.status(403).send('Forbidden');
}
});
}