オブジェクトA、B、C、D、E、F、コラボレーターグループC1、C2、ユーザーC1U1(管理者)、C1U2(ユーザー)、C2U1(管理者)、C2U2(ユーザー)があるとしましょう。
A、C、E はグループ C1 に属します。B、D、F はグループ C2 に属します。
したがって、対応するグループのメンバーのみがそれぞれのオブジェクトを表示できます。また、作成されたオブジェクトは、その作成者 (ユーザー) が属するグループになります。
管理者はすべてのエンティティを作成および編集でき、ユーザーはエンティティのみを作成し、自分のエンティティのみを編集できます。
もちろん、前に述べたように、各ユーザー (管理者または通常のユーザー) は、自分のグループに属するエンティティのみを表示できます。
私の特定のタスクには、エンティティのタイプの数(静的)とユーザーのタイプの数(静的)があります。ユーザーがいくつかのエンティティを作成する複数のコラボレーション グループ (動的) があります。一部のユーザーは、エンティティ (対応するコラボレーション グループのメンバーであるため、表示する資格がある) の表示、作成、および編集のみを行うことができます。それらの一部には、他のユーザーのエンティティを編集する機能があります (ただし、特定の種類のエンティティのみ)。基本的に、JIRA に少し似ています。
とはいえ、私の質問は非常に単純です。このようなものを整理するのに役立つパターンは何ですか? これはよくある問題だと思うので、共通の名前が必要です。
これを作成する鈍い方法があることを知っています。私はsymfony 2を使用しており、RBACとACLの両方がありますが、RBACLはありません。RBAC はユーザーの種類 (私は UserGroups を使用し、ROLE_EDIT_ENTITYTYPE1 のようなロールを作成します) に役立ちます。所有権のチェックは ACL で実行されます。
しかし、これらのコラボレーション グループを実装するにはどうすればよいでしょうか。
私の説明が漠然としていたり、ばかげているように聞こえたりしたら申し訳ありませんが、件名について何か聞きたいです. ここで何かが足りないと感じました。
PS:この質問に関連する場合、「セキュリティ」タグについてはわかりません。