2012-02-22 5 views
0

私は しかし、私は2つの管理者の役割を持っている、SonataAdminBundleをインストールし、それが私のエンティティを管理、構成しています:ダッシュボードページのリンクをROLE ADMINにリンクしてROLE_SUPER_ADMINに表示しますか? ROLE_ADMINとROLE_SUPER_ADMINと私はROLE_ADMIN、私はのsecurity.ymlファイルでこれを使用してい のためのいくつかの管理サービスへのアクセスを制限したい :

access_control: 
     - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin/ads, roles: ROLE_SUPER_ADMIN } 
     - { path: ^/admin, roles: ROLE_ADMIN } 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 

か、ROLE_ADMINを持つユーザ広告 リンクを管理する上でクリックし、彼はアクセスになりますが、ページを拒否されたが、私は、トップナビゲーションにとダッシュボードページにメニュー に隠された、このリンクにしたいときには、完璧に動作します私はこれをします ?これらのテンプレートは、ソナタ・バンドルにある場合、あなたはあなたのアプリケーションのディレクトリにそれらをオーバーライドする必要があります

{% if is_granted('ROLE_ADMIN') %} 
    <li><a href="{{ path('zayso_natgames_admin') }}">Admin</a></li> 
{% endif %} 

: おかげで、あなたのテンプレートで

答えて

2

SonataAdminBundleのデフォルトセキュリティハンドラはNOOP実装であり、常にtrueを返します。あなたは管理バンドルのchange the security configurationにする必要があります。

ロールベースのセキュリティハンドラでは、security.ymlの設定as described hereにロールを追加する必要があります。すべての管理クラスには、ロール階層内の基本ロールに追加する必要があるロールがいくつかあります。あなたは、ID my_bundle.admin.objectmy_bundle.admin.protected_objectで管理クラスを使用している場合:

security: 
    role_hierarchy: 
    ROLE_SUPER_ADMIN: 
     - ROLE_USER 
     - ROLE_ADMIN 
     - ROLE_ALLOWED_TO_SWITCH 
     - ROLE_MY_BUNDLE_ADMIN_PROTECTED_OBJECT_LIST 
     - ROLE_MY_BUNDLE_ADMIN_PROTECTED_OBJECT_EDIT 
     .... 
    ROLE_ADMIN: 
     - ROLE_USER 
     - ROLE_SONATA_USER_ADMIN_USER_EDIT 
     - ROLE_SONATA_USER_ADMIN_USER_LIST 
     - ROLE_MY_BUNDLE_ADMIN_OBJECT_LIST 
     - ROLE_MY_BUNDLE_ADMIN_OBJECT_EDIT 
     ... 

あなたはロールなどのすべての管理/アクションの組み合わせを列挙するために必要がある場合があります。 RoleSecurityHandlerに基づいたカスタムセキュリティハンドラを実装するほうが、多数の管理クラスを持つ方がよいでしょう。

ノート symfonyのACLについてはあまりよく分かりませんが、AclSecurityHandlerについてはわかりません。

0

は、ような何かを行います。

関連する問題

 関連する問題