我正在使用generator-angular-fullstack,我希望能够添加一个类型为:'collaborator'的新角色。
然后检查登录的用户是否具有协作者角色,然后他/她才能删除或更新'api/things'。然而,如果他们想要获取或创建新的东西,他们可以用任何其他角色来做。
我已经尝试了各种不同的方法,但没有运气。
在您的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');
}
});
}