システムで特定の役割を持つグループ内のユーザーの高度な承認と管理を特徴とする CRM に取り組んでいます。
基本的に、私がやりたいことはこれです:
- (ドメイン) モデル / コントローラー / アクションの動的承認を管理する
- オブジェクトとフィールドの動的承認を管理します。
security.yml ファイルの ROLE_xxxx については知っていますが、ロールをハードコーディングしたくありません。
たとえば、スーパー管理者がカスタム承認ロールを作成できる、一種のマトリックス/グリッドが必要です。
これらの役割の 1 つとして、「チーム リーダー」は従業員の電子メール アドレスを表示および編集できますが、Employee_Wage フィールドを表示または編集することはできません。
もう 1 つのユース ケースは、ユーザー グループ「Accounting」のユーザーがアクション generateInvoiceAction() を呼び出すことはできますが、アクション createNewEmployeeAction() にアクセスできない場合です。
もう 1 つの使用例は、PROJECT LEADER が newProjectAction() を使用してプロジェクトを追加できるが、PROJECT オブジェクトの特定のフィールド/属性がグループ PROJECT LEADER によって表示/アクセスできない場合です。
セキュリティとルーティングでこれらを設定できることは理解していますが、これらのロールをハードコーディングしたくありません。たとえば、会社が特定の役割を持つ新しいグループを作成することを決定した場合、作成できるはずです。
私の(疑似)ソリューション
すべてのドメイン モデル、アクション/関数、およびオブジェクト/フィールドを調べて、CRUD のロールを作成します。たとえば、EMPLOYEE_FIRSTNAME_READ、EMPLOYEE_FIRSTNAME_UPDATE、EMPLOYEE_CREATE、EMPLOYEE_EDIT、EMPLOYEE_DELETE などを作成します。
すべてのロールの組み合わせの配列を持つタイトル フィールドを持つデータベース オブジェクト「グループ」を作成します。
ユーザーをグループに入れる
これは行くべき道ですか、それともSymfony2でこれを達成するためのより良い方法はありますか?
基本的には、管理者のバックエンドを使用して構成できるドメイン モデル、オブジェクト、フィールドなどに基づいて特定の役割を持つグループを作成します。
これが正しく説明されていることを願っています。お気軽に返信して詳細をお尋ねください。
(以前のバージョンの Invision Power Board では、パーミッション マスク グリッドを構成してグループにアタッチすることができました)