Symfony Sonata管理员:允许用户只编辑他们拥有的实体(ACL)
我已经用ACL设置了Sonata管理员。我有不同的用户、组和权限,这些都可以正常工作。为了实现这一点,我遵循了 因此,我的问题是:如何确保后端(管理员)用户只能查看、编辑和删除他们使用Symfony和Sonata admin的内置ACL机制创建的实体?Sonata Admin将对象持久化到ACL表中后自动存储对象的所有者(创建者)(从): 所有者: 创建对象时,当前登录的用户被设置为的所有者 并被授予对该对象的所有访问权限Symfony Sonata管理员:允许用户只编辑他们拥有的实体(ACL),symfony,acl,sonata-admin,Symfony,Acl,Sonata Admin,我已经用ACL设置了Sonata管理员。我有不同的用户、组和权限,这些都可以正常工作。为了实现这一点,我遵循了 因此,我的问题是:如何确保后端(管理员)用户只能查看、编辑和删除他们使用Symfony和Sonata admin的内置ACL机制创建的实体?Sonata Admin将对象持久化到ACL表中后自动存储对象的所有者(创建者)(从): 所有者: 创建对象时,当前登录的用户被设置为的所有者 并被授予对该对象的所有访问权限 ,但答案没有详细说明如何使用ACL解决此问题。我看到了两种方法: 创建
,但答案没有详细说明如何使用ACL解决此问题。我看到了两种方法:
- 创建一个
- 重写您的管理类的
事实上,这是我花了很多时间和数千行代码却没有取得巨大成功的许多Symfony事情之一。。。这样简单的需求应该不会让人感到痛苦…不要授予用户
编辑
权限。他们可以编辑自己的实例,但不能编辑其他人的实例
我使用以下配置:
#app/config/config.yml
索纳塔行政:
安全:
资料:
职员:[查看、列出、创建]
编辑:[操作员,导出]
管理员:[硕士]
有一个新的Symfony bundle可以做到这一点:
您所需要做的就是安装并激活捆绑包。非常简单有效,我在Sonata Admin 2.2的Symfony2项目中使用了它。@pulzarraider,我看到您已经回答了这个问题,但是我可以请您详细介绍如何在Sonata Admin中使用ACL实现它吗?我不知道如何将Sonata Admin列表视图中的对象列表限制为当前登录用户拥有的对象。没有
编辑
权限,可以创建
记录的用户只能编辑和删除他们拥有的实例。我认为删除部分很重要:)CreateQuery()仅用于configureListFields公共函数CreateQuery($context='list')