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.Static | static | 由角色授予的操作权限 |
CapabilityType.Boolean | boolean | 由权益控制的开关型权限 |
CapabilityType.Numeric | numeric | 由权益控制、可以带额度的权限 |
implies 中填写的 Key 应当在同一份能力配置中存在。Schema 只检查字段格式;找不到相应 Key 时,系统不会把它加入最终的能力集合。
自动生成的类型
以下类型都根据配置内容生成,不包含写死的 Key:
| 类型 | 包含内容 |
|---|---|
AllCapabilityKey | 所有分组路径和能力 Key |
StaticCapabilityKey | 由角色授予的能力 Key,以及包含这些能力的分组路径 |
DynamicCapabilityKey | 由权益控制的能力 Key,以及包含这些能力的分组路径 |
模板默认配置
下表列出模板默认配置中实际定义的能力项。分组名称和能力 Key 均可修改。
| 能力 Key | type | description.value |
|---|---|---|
user.view | CapabilityType.Static | View user profile |
user.create | CapabilityType.Static | Create user profile |
user.edit | CapabilityType.Static | Edit ticket |
user.delete_account | CapabilityType.Static | Delete user account |
ticket.view | CapabilityType.Static | View ticket |
ticket.create | CapabilityType.Static | Create ticket |
ticket.edit | CapabilityType.Static | Edit user profile |
ticket.delete | CapabilityType.Static | Delete ticket |
starter.download | CapabilityType.Boolean | Access Saavo Starter |
admin.user.manage | CapabilityType.Static | Manage all users |
admin.ticket.manage | CapabilityType.Static | Manage all tickets |
当前模板将 user.edit 和 ticket.edit 的英文描述写反了,上表保留源文件实际值。能力含义仍以 Key 和调用处为准,定制项目时可以纠正这两处展示文案。
修改能力 Key 或清空能力配置时,还要同步处理 roles.ts、entitlements.ts 以及其它引用这些 Key 的代码和数据。