SonataUserBundle переопределяет EditableRolesBuilder

Я пытаюсь переопределить EditableRolesBuilder в папке Security.

  • Я пытаюсь создать такую ​​же иерархию в Application\Sonata\UserBundle\Security\EditableRolesBuilder, которая расширяет базовую Sonata\UserBundle\Security\EditableRolesBuilder от поставщика, но безуспешно.
  • Я пытаюсь переопределить службу в Sonata\UserBundle\Resources\config\admin.xml, чтобы передать свой пользовательский класс, но я нигде не могу найти, как переопределить всю службу. Эта служба без параметров, но жестко закодированный класс, и я не могу пройти это в config.yml

person Георги Гюров    schedule 10.12.2014    source источник
comment
Не самый простой, вам нужно переопределить securityRolesType + трансформатор, чтобы работать правильно.   -  person M Khalid Junaid    schedule 10.12.2014


Ответы (1)


В администраторе Sonata, если вы хотите переопределить обработчик ролей безопасности, вам нужно переопределить 2 службы.

  • 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>

Для справки см. Sonata Admin Override Security Roles Handler

person M Khalid Junaid    schedule 10.12.2014