我对Symfony ACL的工作原理缺乏了解,尤其是使用Sonata ......
Sonata有一些权限,如:
LIST - 查看对象列表
查看 - 查看一个对象的详细信息
创建 - 创建一个新对象
编辑 - 更新现有对象
删除 - 删除现有对象
导出 - (对于原生Sonata导出链接)
全额授予LIST,VIEW,CREATE,EDIT,DELETE和EXPORT
我还为自己的自定义操作分配了自己创建的权限:
protected $accessMapping = array(
'VERIFY' => 'EDIT',
'UNVALIDATE' => 'EDIT',
'CLOSE' => 'EDIT'
);
据我了解,我只需要授予用户EDIT
权限即可VERIFY
,UNVALIDATE
和CLOSE
。
管理员用户可以有3个角色:
security:
role_hierarchy:
ROLE_ADMIN: ROLE_SONATA_ADMIN
ROLE_SUPER_ADMIN: ROLE_ADMIN
现在,根据角色,用户应该能够拥有某些权限。
E.g。 ROLE_ADMIN
应该LIST, VIEW, EDIT, EXPORT
,ROLE_SUPER_ADMIN
应该被授予ALL
。
我该如何管理它?
P.S。我没有使用SonataUserBundle
!
答案 0 :(得分:1)
我通常只使用SecurityVoters
http://www.branchbit.be/blog/using-custom-voters-in-sonata-admin
这为您提供了一种检查角色,权限和对象属性的简单方法,并确定特定用户是否允许在特定对象上执行特定操作。