Skip to content

Documentation


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>