capability.ts

能力树的结构、能力类型和模板默认配置。

config/capability.ts 使用 WebsiteCapabilityRegistry 类型的树形对象定义能力。各级键名均可自行确定,完整路径才是能力 Key,例如 user.view 或 admin.user.manage。user、ticket、starter 和 admin 只是模板中的分组示例,并非固定字段。项目可以重新组织整棵树,也可以导出空对象。

配置结构

树中的每个值只能是以下两种结构之一:

  • 分组对象:继续包含由用户定义的下一级键;
  • 能力说明:包含 type、description 和可选的 implies,不能再包含下一级键。

分组名称没有固定要求。系统使用英文句点连接各级键,组成完整的能力 Key。角色也可以引用分组路径;例如填写 user 时,系统会展开 user 下方的能力 Key。

能力记录

Prop

Type

type实际值含义
CapabilityType.Staticstatic由角色授予的操作权限
CapabilityType.Booleanboolean由权益控制的开关型权限
CapabilityType.Numericnumeric由权益控制、可以带额度的权限

implies 中填写的 Key 应当在同一份能力配置中存在。Schema 只检查字段格式;找不到相应 Key 时,系统不会把它加入最终的能力集合。

自动生成的类型

以下类型都根据配置内容生成,不包含写死的 Key:

类型包含内容
AllCapabilityKey所有分组路径和能力 Key
StaticCapabilityKey由角色授予的能力 Key,以及包含这些能力的分组路径
DynamicCapabilityKey由权益控制的能力 Key,以及包含这些能力的分组路径

模板默认配置

下表列出模板默认配置中实际定义的能力项。分组名称和能力 Key 均可修改。

能力 Keytypedescription.value
user.viewCapabilityType.StaticView user profile
user.createCapabilityType.StaticCreate user profile
user.editCapabilityType.StaticEdit ticket
user.delete_accountCapabilityType.StaticDelete user account
ticket.viewCapabilityType.StaticView ticket
ticket.createCapabilityType.StaticCreate ticket
ticket.editCapabilityType.StaticEdit user profile
ticket.deleteCapabilityType.StaticDelete ticket
starter.downloadCapabilityType.BooleanAccess Saavo Starter
admin.user.manageCapabilityType.StaticManage all users
admin.ticket.manageCapabilityType.StaticManage all tickets

当前模板将 user.edit 和 ticket.edit 的英文描述写反了,上表保留源文件实际值。能力含义仍以 Key 和调用处为准,定制项目时可以纠正这两处展示文案。

修改能力 Key 或清空能力配置时,还要同步处理 roles.ts、entitlements.ts 以及其它引用这些 Key 的代码和数据。