2017-05-17 63 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

给出了这样一个很好的例子。谢谢! –