2017-07-07 9 views
1

ACLの私の理解は非常に限定されており、私のの使用は2つのロールADMINSUPER_ADMINを含む非常に簡単です。ACLの代わりにROLESを使用してSonata Adminを管理する

私のプロジェクト(VIEW、EDIT、LIST、DELETE)には、が複雑でACLは必要ありません。私は特定の管理者またはアクションへのアクセスを役割だけで判断したいと考えています。代わりに、デフォルトis_granted('SUPER_ADMIN')を使用するadmin.isGranted()admin.hasAccess()を使用しての小枝で

  • それは良い練習ですか?

  • 使用するコントローラーまたは管理クラスにsecurity.authorization_checkerisGranted()

ROLEはどのページにアクセスできるのですか?たとえば、サイドバーにSUPER_ADMINの特定の管理ページのみを表示し、ADMINによってアクセスすることを許可しない。

答えて

2

ソナタの役割のアプローチは、管理者クラスごとの役割を定義し、関連する管理ゾーンへの完全なアクセスを許可する特別な役割*_ALLを含むので、あなたでしその後、グループあなたrole_hierarchysecurity.ymlファイル)でこれらの*_ALLROLE_ADMIN下またはROLE_SUPER_ADMIN役割例:

role_hierarchy: 
    ROLE_ADMIN: 
     - ROLE_USER 
     - ROLE_FOO_BUNDLE_BAR_ADMIN_ALL 
     - ROLE_FOO_BUNDLE_BAZ_ADMIN_ALL 
     # ... 
    ROLE_SUPER_ADMIN: 
     - ROLE_ADMIN 
     - ROLE_ALLOWED_TO_SWITCH 
     - ROLE_SU_BUNDLE_SU_ADMIN_ALL 
     # ... 

この継承アプローチに従うと、1ユーザーにはROLE_ADMIN、その他のユーザーにはROLE_SUPER_ADMINを割り当てることができます。特定のアクションにいくつかのロールのサブグループを実行することもできます。

+0

私は20の管理クラスを持っているので、それらをすべてリストアのリストに入れるべきですか? –

関連する問題