-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Labels
enhancementNew feature or requestNew feature or request
Description
cit965 Web端版本
NA
cit965 Server端版本
NA
功能描述以及必要性描述
需要定义系统中的角色并对其进行访问控制。
建议和方案
设计文档
权限控制使用casbin来实现,基于RBAC with domain来实现。使用ent-casbin集成数据库存储权限控制文件。
model.conf
默认都处于kubecit domain
# Request definition 请求中需要包含sub(访问实体),dom(域,默认为kubecit),obj(访问的资源),action(访问的方法),eft为默认值allow
[request_definition]
r = sub, dom, obj, act
# Policy definition 策略为预定义内容,承载于数据库,定义了访问规则
[policy_definition]
p = sub, dom, obj, act
# Policy effect 表明只要有一条策略符合则权限通过
[policy_effect]
e = some(where (p.eft == allow))
# Role definition 角色定义,表示前者在后者中拥有中间定义的角色
[role_definition]
g = _, _, _
# Matchers 匹配规则,访问实体在域中有策略中定义的权限,请求体中的域与策略中的域相同,请求中的对象与策略中的对象相同,请求中的动作与策略中的动作相同
[matchers]
m = g(r.sub, p.sub, r.dom) && r.dom == p.dom && r.obj == p.obj && r.act == p.act角色定义
- UserRoleUnknown // 未知用户(是否需要)
- UserRoleGuest // 访客
- UserRoleRegisterUser // 注册用户
- UserRoleLecturer // 讲师
- UserRoleAdmin // 管理员
- UserRoleSuperAdmin // 超级管理员
流程
- 未登录状态下的用户默认权限为UserRoleGuest
- 用户注册或使用接口登录后角色为UserRoleRegisterUser
- 讲师注册或使用接口登录后角色为UserRoleLecturer
- 管理员UserRoleAdmin需要超级管理员对用户角色进行提权修改角色为管理员
- 超级管理员UserRoleSuperAdmin系统中默认存在,不可注册
接口权限
| Role | Path | Policy |
|---|---|---|
| UserRoleGuest | 用户登录、用户注册、查询课程、查询讲师、观看预览课程 | allow |
| UserRoleRegisterUser | 退出登录、订单创建、查看、修改、删除、支付、观看课程 | allow |
| UserRoleLecturer | 课程增删改查、小节增删改查、讲师信息更新 | allow |
| UserRoleAdmin | 课程审核、订单查询、用户查询、充值记录查询 | allow |
| UserRoleSuperAdmin | * | allow |
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Type
Projects
Status
👀 In review
