代码之家  ›  专栏  ›  技术社区  ›  M Khalid Junaid

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

  •  0
  • M Khalid Junaid  · 技术社区  · 10 年前

    在sonata admin中,角色基于具有CRUD导出和主权限的管理服务名称,但为其他用户创建组或为用户分配特定权限看起来并不那么友好 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 回复  |  直到 10 年前
        1
  •  3
  •   M Khalid Junaid    10 年前

    添加我自己的答案

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

    • 奏鸣曲用户可编辑角色生成器
    • 奏鸣曲用户窗体类型安全角色

    定义如下

        <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 等级取决于奏鸣曲 EditableRolesBuilder 你必须让它独立于你自己 可编辑角色生成器 类,以同样的方式重写sonata的依赖项 RestoreRolesTransformer 到你的班级

    我已将所有角色转换为一系列模块化角色 SecurityRolesType.php 并将其传递给查看此文件中可以查看的所有自定义项

    还可以覆盖角色的分支模板,您可以通过 form_admin_fields.html.twig 从…起 vendor\sonata-project\user-bundle\Resources\views 并添加 app\Resources\SonataUserBundle\views\Form 路径,它将覆盖父细枝文件,在细枝文件中,我已尝试使用手风琴控制引导程序以模块方式显示角色,并具有适当的权限


    注意:此代码仅显示权限 [Create,Edit,View,List,Export,Delete,Master]它不会处理自定义 准许

    最后一步在主配置文件中导入服务文件 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