2017-05-17 90 views
0

我有知識缺乏Symfony的ACL是如何工作的,尤其是在使用奏鳴曲......索納塔管理 - 將權限分配給角色

索納塔有一定的權限,如:

LIST - 查看對象

列表

VIEW - 查看一個對象的細節

CREATE - 創建新的對象

編輯 - 更新現有的對象

刪除 - 刪除現有對象

EXPORT - (對於本地索納塔導出鏈接)

ALL-補助LIST,查看,創建,編輯,刪除和出口

我還指定了自己的自定義操作我自己創建的權限:

protected $accessMapping = array(
    'VERIFY' => 'EDIT', 
    'UNVALIDATE' => 'EDIT', 
    'CLOSE' => 'EDIT' 
); 

據我所知,我只需要授予用戶EDIT的權限,以便能夠VERIFY,UNVALIDATECLOSE

管理員用戶可以有3個角色:

security: 
    role_hierarchy: 
     ROLE_ADMIN: ROLE_SONATA_ADMIN 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

現在取決於角色的用戶應該能夠有一定的權限。

E.g. ROLE_ADMIN應該有LIST, VIEW, EDIT, EXPORTROLE_SUPER_ADMIN應該被授予ALL

我該如何管理它?

P.S.我沒有使用SonataUserBundle

回答

1

我最常做的只是用SecurityVoters

http://www.branchbit.be/blog/using-custom-voters-in-sonata-admin

這給你檢查的角色,權限和對象屬性的一種簡單的方法,如果一個特定的行動作出決定,允許一specififc對象,由一個特定的用戶。

+0

給出了這樣一個很好的例子。謝謝! –