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 的程式碼和資料。