nocobase/docs/en-US/api/acl/acl-role.md
2022-11-13 23:00:59 +08:00

2.0 KiB
Raw Blame History

ACLRole

ACLRoleACL 系统中的用户角色类。在 ACL 系统中,通常使用 acl.define 定义角色。

类方法

constructor()

构造函数

签名

  • constructor(public acl: ACL, public name: string)

详细信息

  • acl - ACL 实例
  • name - 角色名称

grantAction()

为角色授予 Action 权限

签名

  • grantAction(path: string, options?: RoleActionParams)

类型

interface RoleActionParams {
  fields?: string[];
  filter?: any;
  own?: boolean;
  whitelist?: string[];
  blacklist?: string[];
  [key: string]: any;
}

详细信息

  • path - 资源Action路径posts:edit,表示 posts 资源的 edit Action, 资源名称和 Action 之间使用 : 冒号分隔。

RoleActionParams 为授权时,对应 action 的可配置参数,用以实现更细粒度的权限控制。

  • fields - 可访问的字段
    acl.define({
      role: 'admin',
      actions: {
        'posts:view': {
          // admin 用户可以请求 posts:view action但是只有 fields 配置的字段权限
          fields: ["id", "title", "content"], 
        },
      },
    });
    
  • filter - 权限资源过滤配置
    acl.define({
      role: 'admin',
      actions: {
        'posts:view': {
          // admin 用户可以请求 posts:view action但是列出的结果必须满足 filter 设置的条件。
          filter: {
            createdById: '{{ ctx.state.currentUser.id }}', // 支持模板语法,可以取 ctx 中的值,将在权限判断时替换
          },
        },
      },
    });
    
  • own - 是否只能访问自己的数据
    const actionsWithOwn = {
      'posts:view': {
        "own": true // 
       }
    }
    
    // 等价于
    const actionsWithFilter =  {
      'posts:view': {
        "filter": {
          "createdById": "{{ ctx.state.currentUser.id }}"
        }
      }
    }
    
  • whitelist - 白名单,只有在白名单中的字段才能被访问
  • blacklist - 黑名单,黑名单中的字段不能被访问