まず、文脈を大まかに説明します。さまざまな領域を作成できる symfony アプリケーションが必要です。それぞれの領域で、さまざまな種類のユーザー (またはロール) を持つことができます。各ユーザーは、さまざまな領域で複数の役割を持つことができます。
質問を説明するために、次のように定義します。
- 「エリア1」と「エリア2」の2エリア。
- 2 ユーザー: 「ユーザー 1」と「ユーザー 2」。
- 「売り手」と「買い手」の2つの役割。
- 「ユーザー 1」は「エリア 1」の売り手と買い手です。
- 「ユーザー 2」は「エリア 1」では売り手と買い手、「エリア 2」だけでは買い手
私の質問は、ユーザーが特定の領域に属しており、その領域で必要な役割を持っているかどうかを制限されたページにチェックインする最良の方法です。
少し考えた結果、以下のようにしました。
- エリアが作成されると、ロールごとに 1 つの sfGuardGroup と、エリア用に 1 つのグローバル sfGuardGroup も作成し、それぞれにエリア ID のサフィックスを付けます。したがって、この例では、次の役割があります。
- エリア 1、セラー 1、エリア 1 のバイヤー 1
- エリア 2、売り手 2、エリア 2 の買い手 2
- ユーザーが関連するグループに追加されます。したがって、この例では次のようになります。
- ユーザー 1 は、グループ area-1、sellers-1、buyers-1 に属します。
- ユーザー 2 は、グループ area-1、sellers-1、buyers-1、area-2、buyers-2 に属します。
- URL から、私たちがどの地域にいるのかがわかります。たとえば、次のようになります。
- http://example.com/area-1/sellers-restricted-page (グループ area-1 および Sellers-1 のユーザーがアクセス可能)
- http://example.com/area-2/buyers-restricted-page (グループ area-2 およびbuyers-2 のユーザーがアクセス可能)
- http://example.com/area-2/ (グループ area-2 のユーザーがアクセス可能)
その時点で、アクセス許可チェックを実装するのに最適な場所がわからないので、ちょっと行き詰まりました: ガード フィルターを変更しますか? アクションを変更しますか?