Skip to content

Admin RBAC 权限目录

管理后台 RBAC 的权限 code 注册表与 catalog 查询,供 API、PermissionsGuard 与 Admin SPA 按钮级权限共用。

源码:packages/shared/src/permissions/

模块导出

导入路径用途
@zengchaowu/shared/permissions/catalog全部:code 常量、PERMISSION_GROUPS、catalog 查询、definePermissionGroup
@zengchaowu/shared/permissions/basePermissions默认 user 角色种子 DEFAULT_USER_ROLE_PERMISSION_CODES(写入 DB,非鉴权兜底)
@zengchaowu/shared/permissions/adminRolePermissions默认 admin 角色种子 listAdminScopePermissionCodes()(全部 admin_*
@zengchaowu/shared/permissions/defaultRoles默认角色 id(超级管理员 / 普通用户)
@zengchaowu/shared/functions/auth/permissionSatisfies前后端一致的匹配规则(合并隐式权限)

code 格式

{module}.{resource}.{action}

示例:

  • 八码(有 owner):business.order.self_* + business.order.admin_*(后续可加 team_*
  • 四码(无 owner)= 八码抬权子集:仅 system.user.admin_view|admin_create|admin_edit|admin_delete

声明新权限

实现文件为 permissions/catalog.ts

typescript
// 仅 admin_* 四码(无本人范围,不进默认 user 种子)
export const fooPermissionGroup = defineAdminOnlyPermissionGroup({
  module: 'business',
  resource: 'foo',
  label: 'Foo',
})
export const FooPermissions = fooPermissionGroup.codes

// 八码:self_* + admin_*;本人四码加入 DEFAULT_USER_ROLE_PERMISSION_CODES
export const barPermissionGroup = defineConsumerAdminPermissionGroup({
  module: 'business',
  resource: 'bar',
  label: 'Bar',
})
export const BarPermissions = barPermissionGroup.codes

然后:

  1. 若属默认普通人能力,把本人四码(SELF_VIEW 等)加入 basePermissions.tsDEFAULT_USER_ROLE_PERMISSION_CODESadmin_* 会随 catalog 进入超级管理员种子,不必手抄
  2. packages/shared 执行 pnpm run build
  3. API:@RequirePermissions;匿名面用 @Public()
  4. 重启 API,依赖启动种子补齐 user / admin 角色权限后重新登录

约定

  • 权限只来自角色;无角色用户无法访问需鉴权资源
  • 写蕴含读:同 scope 下 *_create|edit|delete*_viewself / team / admin
  • 数据范围self_* 本人;admin_* 抬权(有 owner 时=全站,无 owner 时=整份资源);预留 team_*
  • DB role_permissions.permission_code 必须与 catalog 一致。* 仅根用户运行时拥有,不能分配给角色
  • 默认 user 角色种子见 DEFAULT_USER_ROLE_PERMISSION_CODES(启动写入,可运营调整)
  • 默认 admin 角色种子见 listAdminScopePermissionCodes()(启动写入全部 admin_*

相关项目文档

  • API RBAC 服务:packages/api.zengchaowu.com/src/services/rbac/README.md
  • Admin 403 与按钮权限:packages/admin.zengchaowu.com/README.md