私は広く読んで例を試しましたが、まだ Symfony2 ROLE と Sonata Admin のコツをつかむことができません。4 つのレベルのユーザーがいて、
- 基本的に私が開発者である SuperAdmin
- アプリケーションの所有者である管理者。ユーザー/グループ管理以外のすべてにアクセスできます。管理者は、認証情報を含む電子メールをシステムに送信する代理店を追加します
- その後、プロジェクトのために働く人々(ファシリテーター)の従業員を追加するエージェンシー
- フィールドに入るエージェンシーの従業員であるファシリテーター システムへのエントリー
Sonata Admin で次のことを行います。
- ファシリテーターのみがエントリー管理メニューを見る
- Entry と Facilitator Management メニューのみを表示するエージェンシー
- 代理店、エントリー、ファシリテーターの管理メニューのみを表示する管理者
- SonataUserBundle によって生成されたユーザーおよびグループ管理を含む他のすべてを表示するための SuperAdmin
私のsecurity.ymlファイルは次のようになります
security:
role_hierarchy:
ROLE_FACILITATOR:
- ROLE_USER
- ROLE_SONATA_ADMIN
- ROLE_SONATA_ADMIN_ENTRY_EDIT
- ROLE_SONATA_ADMIN_ENTRY_LIST
- ROLE_SONATA_ADMIN_ENTRY_CREATE
- ROLE_SONATA_ADMIN_ENTRY_VIEW
- ROLE_SONATA_ADMIN_ENTRY_DELETE
ROLE_AGENCY:
- ROLE_FACILITATOR
- ROLE_SONATA_ADMIN_FACILITATOR_EDIT
- ROLE_SONATA_ADMIN_FACILITATOR_LIST
- ROLE_SONATA_ADMIN_FACILITATOR_CREATE
- ROLE_SONATA_ADMIN_FACILITATOR_VIEW
- ROLE_SONATA_ADMIN_FACILITATOR_DELETE
ROLE_OLX_ADMIN:
- ROLE_AGENCY
- ROLE_SONATA_ADMIN
- ROLE_SONATA_ADMIN_AGENCY_EDIT
- ROLE_SONATA_ADMIN_AGENCY_LIST
- ROLE_SONATA_ADMIN_AGENCY_CREATE
- ROLE_SONATA_ADMIN_AGENCY_VIEW
- ROLE_SONATA_ADMIN_AGENCY_DELETE
ROLE_SUPER_ADMIN:
- ROLE_OLX_ADMIN
- ROLE_ALLOWED_TO_SWITCHS