特定のグループに設定された権限をビット マスクとして表します。ビット マスクを一緒に OR すると、結果のアクセス許可セットが得られます。
@アレックスの更新:
私はこの回答を3年前に書きましたが、次のことをほのめかしていたと思います...
質問から
ネストされたグループ階層。各グループは、読み取り、書き込み、追加、および削除へのアクセスを許可/拒否できます (そのグループに対して明示的に、またはその親の 1 つによって暗黙的に)。さらに、このシステムでは、ユーザーが複数のグループのメンバーになることもできます。――ここが行き詰ってますね。すべてをセットアップしましたが、特定のユーザーのペミッションを決定するための実際のロジックに苦労しています。
システム内のグループ (またはロール) の合計権限セットに一致するビットマスクを割り当てます。
例00
(2ビットを使用すると、ここでは簡単になります!)
最初のビットはPermission A
、2 番目のPermission B
.
ここで、グループ A が次の権限セットを付与するとします: 01
.
... そして、グループ B が次の権限セットを付与するとします: 10
.
OR
グループの任意のセット内のユーザーの結果のアクセス許可セットを取得するには、アクセス許可セットのビット マスクに対して論理を実行できます。
Permission set for Group A 01
Permission set for Group B 10 OR
----
Resultant permission set 11 (i.e. both permission A and B are conferred)
質問者のシステムの詳細はわかりませんが、ここで概説したシステムを拡張して、さまざまな論理演算子を使用してさまざまなグループ構成動作を実現できます。