Skip to content
marstone edited this page Nov 24, 2020 · 7 revisions

Canvas RBAC examples

# 按照角色,来定义应用内的授权关系(主谓宾)
roles:

# 定义 everyone 角色
- name: everyone
  # 主语
  subjects:
  - user: 
      account: * 
  # 定义该角色可访问权限对象列表 
  rules:
  # 权限对象及其动词和限定:所有用户可以自己的“用户类型(Data节定义)”的数据
  - objects: 
    - kind: data
      name: User
    verbs: 
    - name: users
      filters:
      - name: account
        value: "=$ACCOUNT" 
# 定义 admins 角色
- name: admins
  # 主语,包括三部分用户
  subjects:
  # 第一部分用户:部门经理,只能访问本部门的数据(limitDept=true)
  - post: 
      code: MANAGERS
  # 第二部分用户:人事部门(HR)的全体员工 
  - post: 
      code: STAFF
    dept: 
      code: HR 
  # 第三部分用户:直接指定用户账号
  - user: 
      account: marstone 
  # 定义该角色可访问权限对象列表 
  rules:
  # 第一组权限对象:用户数据类型(通过Data节定义)的所有操作 
  - objects: 
    - kind: data
      name: User
    verbs: 
    - name: "*" 
    # 允许分级授权。r:默认,当前主体拥;w:可授予他人但不能再分级;x:可将x授予其他人
    grant: rwx
  # 第二组权限对象:可访问所有菜单  
  - objects: 
    - kind: menu
      name: "*"

# 定义 users 角色
- name: users
  subjects:
  # 全体员工 
  - post: 
      code: STAFF
  rules:
  # 仅可查询用户数据
  - objects: 
    - kind: data
      name: User
    verbs:
    - name: listUsers 
      filters:
      - name: dept
        value: "=$DEPTS" 
  # 可访问首页(Home)、帮助页(Help) 
  - objects: 
    - kind: menu
      name: Home 
      # 是否限定部门,默认false。为true的话,需匹配用户岗位中的部门和菜单的`主管部门*` 
      limitDept: true
    - kind: menu 
      name: Help  
    
Clone this wiki locally