1

オブジェクト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:この質問に関連する場合、「セキュリティ」タグについてはわかりません。

4

1 に答える 1

1

あなたの場合、ロール階層だけでは十分ではありません。必要なのは完全な ACL です: http://symfony.com/doc/current/cookbook/security/acl.html

エンティティの保存時にリスナーに ACL 権限を作成し、すべてのグループ メンバーにアクセス権を付与できます。

どのユーザーがエンティティを編集でき、どのユーザーがそれらを表示することしかできないかを制御するために、さまざまな ACL マスクを使用することもできます: http://symfony.com/doc/current/cookbook/security/acl_advanced.html

主にデフォルトのドキュメントにリンクして申し訳ありませんが、これは基本的に必要なものすべてをカバーしていると思います。

于 2013-09-30T08:41:19.630 に答える