mirror of
https://github.com/nocobase/nocobase
synced 2024-11-16 02:06:00 +00:00
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>
88 lines
2.0 KiB
Markdown
88 lines
2.0 KiB
Markdown
# 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)`
|
||
|
||
**类型**
|
||
```typescript
|
||
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 - 可访问的字段
|
||
```typescript
|
||
acl.define({
|
||
role: 'admin',
|
||
actions: {
|
||
'posts:view': {
|
||
// admin 用户可以请求 posts:view action,但是只有 fields 配置的字段权限
|
||
fields: ["id", "title", "content"],
|
||
},
|
||
},
|
||
});
|
||
```
|
||
* filter - 权限资源过滤配置
|
||
```typescript
|
||
acl.define({
|
||
role: 'admin',
|
||
actions: {
|
||
'posts:view': {
|
||
// admin 用户可以请求 posts:view action,但是列出的结果必须满足 filter 设置的条件。
|
||
filter: {
|
||
createdById: '{{ ctx.state.currentUser.id }}', // 支持模板语法,可以取 ctx 中的值,将在权限判断时替换
|
||
},
|
||
},
|
||
},
|
||
});
|
||
```
|
||
* own - 是否只能访问自己的数据
|
||
```typescript
|
||
const actionsWithOwn = {
|
||
'posts:view': {
|
||
"own": true //
|
||
}
|
||
}
|
||
|
||
// 等价于
|
||
const actionsWithFilter = {
|
||
'posts:view': {
|
||
"filter": {
|
||
"createdById": "{{ ctx.state.currentUser.id }}"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
* whitelist - 白名单,只有在白名单中的字段才能被访问
|
||
* blacklist - 黑名单,黑名单中的字段不能被访问
|
||
|