我试图了解如何扩展wolkenkit auth层。
假设我想要具有不同角色的用户:普通用户,主持人和管理员。
正常用户可以查看和修改自己的内容,但不允许修改其他用户的内容。
主持人允许用户修改所有条目,但无权删除除自己内容以外的任何内容。
admin 用户可以修改和删除所有内容。
还有未经身份验证的来宾用户,他们可以阅读所有内容但不进行任何修改。
阅读Write model: Configuring authorization的文档我可以通过编写以下内容来模拟来宾 / 正常用例:
const initialState = {
isAuthorized: {
commands: {
issue: { forAuthenticated: false, forPublic: false }
},
events: {
issued: { forAuthenticated: true, forPublic: true }
}
}
};
根据我的要求,我需要在此对象中定义其他角色。类似于{ forModerator: true, forAdmin: true }
。
还有Granting access from a command在运行时更改权限,但我不确定这是否有效。即使它确实如此,也感觉非常黑客。
这有可能吗?
答案 0 :(得分:1)
免责声明:我是wolkenkit的开发人员之一。
简而言之:不,现在不幸的是,这是不可能的,但这个功能在我们的路线图上。至少在今天,我无法告诉你什么时候可以使用。
您最好的选择是自己做。一种方法可能是使用您的身份提供程序在审阅者的JWT中包含moderator
声明,然后在命令处理程序中正确处理。
在命令处理程序中,您可以通过
访问令牌command.user.token
因此您可以根据需要获得声明。我很抱歉,现在没有更好的答案: - (