Appearance
Documentation / @kizami/authz / resolveEffectivePermissions
Function: resolveEffectivePermissions()
resolveEffectivePermissions(
presets):Map<string,Scope>
Defined in: resolve.ts:110
複数プリセット(付与+拒否)から実効権限の最終形を求める、権限エンジンの唯一の入口。
合成規則: (全プリセットの grants の union) − (全プリセットの denies の union)。 1つでも deny を持つプリセットが割り当てられていれば、他のどのプリセットが付与していても その権限は無効になる(deny は付与に優先する)。
deny を「合算直後」と「含意展開後」の2回適用しているのは、両方に意味があるため(判断点):
- 合算直後: 拒否された操作権限は、そこから「操作は閲覧を含意する」の展開も起こさない。 例)
closing.executeを拒否 →closing.viewも(他に付与元が無ければ)得られない。 拒否したのに拒否した権限由来の閲覧だけ残る、という中途半端な状態を作らない。 - 含意展開後: 他の権限の含意によって拒否対象が復活するのを防ぐ。 例)
attendance.record.viewを拒否 →shift.manageが含意していても得られない。
Parameters
presets
readonly PresetPermissions[]
Returns
Map<string, Scope>