Sonata Admin:让用户只编辑他们拥有的实体(ACL)

时间:2012-11-30 16:12:19

标签: symfony acl sonata-admin

我使用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解决此问题。

3 个答案:

答案 0 :(得分:4)

有一个新的Symfony包就是这样做的:https://github.com/coopTilleuls/CoopTilleulsAclSonataAdminExtensionBundle

您需要做的就是enable ACL in Sonata Admin,安装捆绑包并激活它。非常简单有效,我在Sonata Admin 2.2的Symfony2项目中使用它。

答案 1 :(得分:3)

我看到了两种方法:

我无法做任何这些我做的非常简单的事情,但我认为这是个主意。

实际上,这是许多Symfony的事情之一,我花了很多时间和成千上万行代码而没有大的成功......这样简单的需求不应该像屁股一样痛苦......

答案 2 :(得分:2)

不要向用户授予EDIT权限。他们可以编辑他们拥有的实例,但不能编辑其他实例。

我使用此配置:

#app/config/config.yml
sonata_admin:
    security:
        information:
            STAFF:    [VIEW, LIST, CREATE]
            EDITOR:   [OPERATOR, EXPORT]
            ADMIN:    [MASTER]

Documentation