背景
目前只做了用户账号间的数据隔离。存在情况,同一个项目里不同人创建不同的资源,项目里的成员都可以看得到,同时也不能互相随便修改数据。所以需要一些组的权限控制。
需求
系统管理员:能crud所有数据
项目管理员:能cru自己项目下的所有数据
项目成员:能cu自己项目下的本人的数据。r项目下的所有数据。
group:他在哪个组(这里在里面就是项目 app, 有个特殊的,超级管理员组,能做所有事情)
role:角色是什么(超级管理员,项目管理员,项目成员)
resource:能对什么资源(node,app,policy, user)
action:做什么(crud)
系统设计
新增表:
user/ group_member
_id |
自增id |
||||
appId |
项目组 |
int |
项目id |
||
role |
角色 |
int |
1 项目管理员 2 项目成员 |
||
resource |
资源 |
[]string |
["node", "policy", "app", "model","node_config"] |
||
action |
动作 |
[]struct{} |
[ { "res":"node", "act":["create","read","update","delete"] }, { "res":"app", "act":["r"] } 。。。。。。 ] |
c:create r:read u:update d: delete 一个项目管理员的权限 |
|
userId |
用户id |
int64 |
|||
admin |
超级管理员 |
uint8 </ |