Sonata管理员增强了安全角色的视图

时间:2015-02-04 06:28:30

标签: symfony sonata-admin symfony-sonata sonata-user-bundle sonata

在sonata admin中,角色基于具有CRUD导出和主权限的管理服务名称,但考虑到sonata管理员帖子模块的示例,它看起来不太方便用户为其他用户创建组或为用户分配特定权限admin的服务命名为sonata.news.admin.post,对于该服务,生成的角色看起来像

ROLE_SONATA_NEWS_ADMIN_POST_EDIT
ROLE_SONATA_NEWS_ADMIN_POST_LIST
ROLE_SONATA_NEWS_ADMIN_POST_CREATE
ROLE_SONATA_NEWS_ADMIN_POST_VIEW
ROLE_SONATA_NEWS_ADMIN_POST_DELETE
ROLE_SONATA_NEWS_ADMIN_POST_EXPORT
ROLE_SONATA_NEWS_ADMIN_POST_OPERATOR
ROLE_SONATA_NEWS_ADMIN_POST_MASTER

对于普通用户来说,难以阅读/分配角色是否有更好的方式来表示生成的角色?

1 个答案:

答案 0 :(得分:3)

添加我自己的答案

在Sonata管理员中,如果您希望将显示安全角色更改为用户友好视图,则必须覆盖在奏鸣曲的服务下面

  • sonata.user.editable_role_builder
  • sonata.user.form.type.security_roles

定义如下所示

    <services>
        <service id="sonata.user.editable_role_builder" class="Acme\DemoBundle\Security\EditableRolesBuilder">
            <argument type="service" id="security.context" />
            <argument type="service" id="sonata.admin.pool" />
            <argument>%security.role_hierarchy.roles%</argument>
        </service>
        <service id="sonata.user.form.type.security_roles" class="Acme\DemoBundle\Form\Type\SecurityRolesType">
            <tag name="form.type" alias="sonata_security_roles" />
            <argument type="service" id="sonata.user.editable_role_builder" />
        </service>

    </services>

并在这些服务中定义您的类,我使用了Acme\DemoBundle

的演示代码

现在SecurityRolesType类是Sonata的EditableRolesBuilder的依赖者,你必须让它依赖于你自己的EditableRolesBuilder类,所以以同样的方式覆盖奏鸣曲RestoreRolesTransformer对你班级的依赖

我已将所有角色转换为SecurityRolesType.php中的模块明智角色数组,并将其传递给您查看可在此文件中查看的所有自定义

还可以覆盖角色的树枝模板,您可以通过从form_admin_fields.html.twig处理vendor\sonata-project\user-bundle\Resources\views并添加app\Resources\SonataUserBundle\views\Form路径覆盖父树枝文件来覆盖它,在twig文件中我试图使用accordion control bootstrap以明智的方式显示角色并具有适当的权限


  

注意:此代码仅显示权限   [创建,编辑,查看,列出,导出,删除,掌握]它将无法处理自定义   许可

最后一步在主配置文件config.yml

中导入服务文件
    imports:
        - { resource: parameters.yml }
        - { resource: security.yml }
        - { resource: @AcmeDemoBundle/Resources/config/admin.xml }

有关完整代码演示,您可以在下面的存储库中找到它

Sonata Admin Enhanced View For Security Roles

模块权限预览

enter image description here