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