a6eebb940f
* feat: improve code * feat: update docs * feat: update docs * Update index.md * Update features.md * Update when.md * Update contributing.md * Update translations.md * feat: clean up * Add files via upload * Update the-first-app.md * Update plugins.md * Update a-b-c.md * Update blocks.md * feat: update docs * Add files via upload * Update charts.md * feat: update navs * Update index.md * Update index.md * Update features.md * Update index.md * Update docker-compose.md * Update create-nocobase-app.md * Update git-clone.md * Update contributing.md * Update translations.md * Update plugins.md * Update the-first-app.md * Add files via upload * Update charts.md * Update charts.md * Update a-b-c.md * Update collections.md * Update menus.md * Update menus.md Co-authored-by: Zhou <zhou.working@gmail.com>
2.0 KiB
2.0 KiB
ACL Role
ACLRole,ACL 系统中的用户角色类。在 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 - 黑名单,黑名单中的字段不能被访问