私は複雑なユーザー管理システムを持っているとしましょう。このシナリオでは、ユーザーはグループと関連付けることができ、グループはロールと関連付けることができます。さらに、グループには他のグループを含めることができます。
「アカウント管理」の場合、現在のユーザーは「アカウント管理」プロセスを実行できる役割を失うことはできないと想定しています。そのユースケースをどのように実装するのが最善の方法なのだろうか。
簡単なシナリオを考えてみましょう: たとえば、階層の下では、ユーザーはグループ G3 と G5 によってロールに関連付けられています。
---USER---
| |
G1 G3----
| | |
G2 G5 G6
|
REQUIRED_ROLE
G3 グループの編集中に、誰かが G3 グループ メンバーを変更してみてください。
---USER---
| |
G1 G3----
| | |
G2 G7 G6
この変更をコミットすると、ユーザー階層から「アカウント管理」ロールが削除され、ユーザーはアカウントを編集できなくなります。
私の唯一のアイデアは、すべてのグループとロールをメモリに読み込み、すべての依存関係を手動で変更して、コミット後にロールがまだ割り当てられるかどうかを確認することです。しかし、その解決策は将来潜在的なバグの原因となる可能性があり、エレガントではありません。エレガントな方法で解決する方法を知っている人はいますか?