我使用ACL设置了Sonata Admin。我有不同的用户,组和权限,工作正常。为实现这一目标,我遵循了the Sonata Admin documentation on ACLs。
所以这是我的问题:什么是一种干净的方法来确保后端(管理员)用户只能查看,编辑和删除他们使用Symfony和Sonata Admin&#创建的实体39; s内置ACL机制?一旦将对象的所有者(创建者)保存在ACL表中(来自Sonata docs),它就会自动存储该对象的所有者(创建者):
所有者: 创建对象时,将当前登录的用户设置为所有者 该对象并被授予该对象的所有访问权限;
The same question has already been answered on Stackoverflow,但答案并未详细说明如何使用ACL解决此问题。
答案 0 :(得分:4)
有一个新的Symfony包就是这样做的:https://github.com/coopTilleuls/CoopTilleulsAclSonataAdminExtensionBundle
您需要做的就是enable ACL in Sonata Admin,安装捆绑包并激活它。非常简单有效,我在Sonata Admin 2.2的Symfony2项目中使用它。
答案 1 :(得分:3)
我看到了两种方法:
CreateQuery()
我无法做任何这些我做的非常简单的事情,但我认为这是个主意。
实际上,这是许多Symfony的事情之一,我花了很多时间和成千上万行代码而没有大的成功......这样简单的需求不应该像屁股一样痛苦......
答案 2 :(得分:2)
不要向用户授予EDIT
权限。他们可以编辑他们拥有的实例,但不能编辑其他实例。
我使用此配置:
#app/config/config.yml
sonata_admin:
security:
information:
STAFF: [VIEW, LIST, CREATE]
EDITOR: [OPERATOR, EXPORT]
ADMIN: [MASTER]