1

私は複雑なユーザー管理システムを持っているとしましょう。このシナリオでは、ユーザーはグループと関連付けることができ、グループはロールと関連付けることができます。さらに、グループには他のグループを含めることができます。

「アカウント管理」の場合、現在のユーザーは「アカウント管理」プロセスを実行できる役割を失うことはできないと想定しています。そのユースケースをどのように実装するのが最善の方法なのだろうか。

簡単なシナリオを考えてみましょう: たとえば、階層の下では、ユーザーはグループ G3 と G5 によってロールに関連付けられています。

---USER---
|        |
G1       G3----
|        |    |
G2       G5   G6
         |
   REQUIRED_ROLE

G3 グループの編集中に、誰かが G3 グループ メンバーを変更してみてください。

---USER---
|        |
G1       G3----
|        |    |
G2       G7   G6

この変更をコミットすると、ユーザー階層から「アカウント管理」ロールが削除され、ユーザーはアカウントを編集できなくなります。

私の唯一のアイデアは、すべてのグループとロールをメモリに読み込み、すべての依存関係を手動で変更して、コミット後にロールがまだ割り当てられるかどうかを確認することです。しかし、その解決策は将来潜在的なバグの原因となる可能性があり、エレガントではありません。エレガントな方法で解決する方法を知っている人はいますか?

4

1 に答える 1

0

これは重要なユース ケースであるため、通常の整合性制約を使用することはできません。プレコミット トリガーを実行して階層をスキャンし、ユーザーが必要なアクセス許可を持っているかどうかを判断する必要があります。そうでない場合は、例外をスローします。

于 2013-01-27T20:12:31.477 に答える