没有ROLE_SUPER_ADMIN用户的空仪表板(symfony2,sonata acl)

时间:2017-04-12 10:53:16

标签: symfony sonata

我在Sonata Admin Bundle中使用ACL。当我以 root (具有ROLE_SUPER_ADMIN)身份登录时,我可以创建新用户。我创建了一个(名为 qwer ),然后将其作为 qwer 进入。

问题:在我的情况下, qwer 用户有空的dashbord,甚至有像

这样的角色

ROLE_SONATA_USER_ADMIN_USER_GUEST, ROLE_SONATA_USER_ADMIN_USER_STAFF, ROLE_SONATA_USER_ADMIN_USER_EDITOR

请告诉我 - 我该怎么做才能解决问题所在。

2 个答案:

答案 0 :(得分:1)

您是否完全关注the documentation for ACL了?您应该添加sonata_admin配置和security.yml以确保。我看起来像:

sonata_admin:
    # ...
    security:
        handler: sonata.admin.security.handler.acl
        # acl security information
        information:
            LIST:     [LIST]
            GUEST:    [VIEW, LIST]
            STAFF:    [LIST, CREATE]
            EDITOR:   [OPERATOR, EXPORT, EDIT]
            ADMIN:    [MASTER]
        admin_permissions: [CREATE, LIST, DELETE, UNDELETE, EXPORT, OPERATOR, MASTER]
        # permission related to the objects
        object_permissions: [VIEW, EDIT, DELETE, UNDELETE, OPERATOR, MASTER, OWNER]

同时确保您的security.yml具有所需的配置:

security:
    # ...
    providers:
        fos_userbundle:
            id: fos_user.user_manager
    acl:
        connection: default
    access_decision_manager:
        strategy: unanimous

并为您的app/config/parameters.yml或捆绑参数添加PermissionMap:

# src/AppBundle/Resources/config/services.yml

parameters:
    # ...
    # Symfony 3 and above
    security.acl.permission.map:
      class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap

    # Symfony < 3
    security.acl.permission.map.class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap

然后你需要运行3个命令:

初始化ACL设置(仅一次)

php app/console init:acl

重新加载对配置的更改(sonata_admin配置文件中的每次更改)

php app/console sonata:admin:setup-acl

为现有实体/对象生成(新)ACL规则。 (sonata_admin配置文件中的每个更改)

php app/console sonata:admin:generate-object-acl

然后,一旦设置完成配置,请注销并重新登录,以便应用角色。

答案 1 :(得分:0)

要解决此问题,请检查您的应用程序包行:

services:
    security.acl.permission.map:
        class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap

parameters: