permissionSatisfies
Admin RBAC 权限匹配纯函数,与 API PermissionsGuard 使用同一套规则。前端 usePermission().can() 与后端 @RequirePermissions 应共用此逻辑。
函数签名
typescript
function permissionSatisfies(userPermissions: string[], required: string): boolean
function anyPermissionSatisfies(userPermissions: string[], required: string[]): boolean
function getPermissionCodesFromPayload(
payload: { permissions?: unknown } | null | undefined,
): string[]
function payloadHasPermission(
payload: { permissions?: unknown } | null | undefined,
required: string,
): boolean参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
userPermissions | string[] | 是 | JWT 或会话中的权限 code 列表 |
required | string | 是 | 所需权限 code |
payload | object | 是 | 含 permissions 字段的 JWT payload |
返回值
| 类型 | 说明 |
|---|---|
boolean | 是否满足权限(anyPermissionSatisfies 为任一满足) |
string[] | getPermissionCodesFromPayload 规范化后的 code 列表 |
工作原理
| 条件 | 结果 |
|---|---|
用户权限含 * | 通过 |
| 精确匹配 required code | 通过 |
required 以 .view 结尾,且用户持有同资源 .edit | 通过 |
| 其他 | 不通过 |
示例:持有 business.product.edit 时,permissionSatisfies(perms, 'business.product.view') 为 true。
相关文档
- Admin RBAC 权限目录 — code 常量定义与新增流程
- parseJwtPayload — 从 access token 解析
permissions数组