d805fafbfc
* docs: relation-repository * docs: has many repository * docs: acl * docs: acl * docs: acl * docs: acl * docs: acl/AllowManager * docs: acl/ACLAvailableAction * docs: acl * docs: clean up * feat: doc menus Co-authored-by: chenos <chenlinxh@gmail.com>
1.5 KiB
1.5 KiB
AllowManager
开放权限管理
类方法
constructor(public acl: ACL)
实例化 AllowManger
allow(resourceName: string, actionName: string, condition?: string | ConditionFunc)
注册开放权限
// users:login 可以被公开访问
allowManager.allow('users', 'login');
参数
- resourceName - 资源名称
- actionName - 资源动作名
- condition? - 配置生效条件
- 传入
string
,表示使用已定义的条件,注册条件使用acl.allowManager.registerCondition
方法。acl.allowManager.registerAllowCondition('superUser', async () => { return ctx.state.user?.id === 1; }); // 开放 users:list 的权限,条件为 superUser acl.allow('users', 'list', 'superUser');
- 传入 ConditionFunc,可接收
ctx
参数,返回boolean
,表示是否生效。// 当用户ID为1时,可以访问 user:list acl.allow('users', 'list', (ctx) => { return ctx.state.user?.id === 1; });
- 传入
registerAllowCondition(name: string, condition: ConditionFunc)
注册开放权限条件
getAllowedConditions(resourceName: string, actionName: string): Array<ConditionFunc | true>
获取已注册的开放条件
参数
- resourceName - 资源名称
- actionName - 资源动作名
aclMiddleware()
中间件,注入于 acl
实例中,用于判断是否开放权限,若根据条件判断为开放权限,则在 acl
middleware 中会跳过权限检查。