2014-02-20 61 views
4

我使用的是「角色」安全處理程序,並希望創建一個新的角色「ROLE_SONATA_ADMIN」,並授予所有權限的話,如:索納塔管理員捆綁授予權限的自定義管理員角色

ROLE_SONATA_ADMIN: [MASTER] 

的只有這樣,我可以給予我的用戶的所有權限是給它security.yml:

ROLE_SONATA_ADMIN: 
    - ROLE_SUPER_ADMIN 

,但我不希望包括ROLE_SUPER_ADMIN在我的角色,我將可能要在未來增加一些限制

我試圖ACL

handler: sonata.admin.security.handler.role 

但得到使用:
Argument 2 passed to Sonata\AdminBundle\Security\Handler\AclSecurityHandler::__construct() must be an instance of Symfony\Component\Security\Acl\Model\MutableAclProviderInterface

角色處理程序是足以讓我和我不需要ACL

如何創建角色並授予權限它?我讀過的文件,但還是不明白

編輯:我現在明白了:每一個實體,我需要通過在security.yml角色與ROLE_SONATA_ADMIN_ [服務名稱] _ [權限]設置權限
我的服務名稱是:sonata.admin.widget
這裏的解決方案:

 ROLE_SONATA_WIDGET_ADMIN: 
     - ROLE_SONATA_ADMIN_WIDGET_LIST 
     - ROLE_SONATA_ADMIN_WIDGET_VIEW 
     - ROLE_SONATA_ADMIN_WIDGET_CREATE 
     - ROLE_SONATA_ADMIN_WIDGET_EDIT 
     - ROLE_SONATA_ADMIN_WIDGET_DELETE 
     - ROLE_SONATA_ADMIN_WIDGET_EXPORT 

    ROLE_SONATA_ADMIN: 
     - ROLE_SONATA_WIDGET_ADMIN 

回答

3

檢查點23.3的documentation。您可以在security.yml中添加角色。如果你使用角色處理器,它就像這樣工作。

security: 
    ... 
    role_hierarchy: 
     # for convenience, I decided to gather Sonata roles here 
     ROLE_SONATA_FOO_READER: 
      - ROLE_SONATA_ADMIN_DEMO_FOO_LIST 
      - ROLE_SONATA_ADMIN_DEMO_FOO_VIEW 
     ROLE_SONATA_FOO_EDITOR: 
      - ROLE_SONATA_ADMIN_DEMO_FOO_CREATE 
      - ROLE_SONATA_ADMIN_DEMO_FOO_EDIT 
     ROLE_SONATA_FOO_ADMIN: 
      - ROLE_SONATA_ADMIN_DEMO_FOO_DELETE 
      - ROLE_SONATA_ADMIN_DEMO_FOO_EXPORT 
     # those are the roles I will use (less verbose) 
     ROLE_STAFF:    [ROLE_USER, ROLE_SONATA_FOO_READER] 
     ROLE_ADMIN:    [ROLE_STAFF, ROLE_SONATA_FOO_EDITOR, ROLE_SONATA_FOO_ADMIN] 
     ROLE_SUPER_ADMIN:  [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 
相關問題