Пакет администратора сонаты acl-class-field и acl-object-field

Как я могу настроить ACL с полем класса в пакете администрирования сонаты

До сих пор настройка ACL с SonataAdminBundle была простой. Теперь я хотел бы копнуть немного глубже. Но я не могу найти никакой документации, касающейся class-field-scope.

Я хотел бы сделать следующее:

Допустим, у меня есть сущность продукта. Теперь я хочу ограничить доступ для пользователей ROLE_ADMIN_PRODUCT_STAFF к «field_XY» этой сущности.

Однако ROLE_ADMIN_PRODUCT_EDITOR должен иметь к нему доступ (VIEW, EDIT).

Кто-нибудь сталкивался с такими требованиями?!


person Anil Gupta    schedule 21.05.2012    source источник


Ответы (1)


Вы можете использовать $this->isGranted('ROLE_ADMIN_PRODUCT_STAFF') в методе configureFormFields() для добавления полей в зависимости от роли пользователя, вошедшего в систему в данный момент.

Пример:

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('first_field')
        ->add('second_field');

    if ($this->isGranted('ROLE_ADMIN_PRODUCT_STAFF') {
        $formMapper
            ->add('field_XY');
    }
}
person Pierre    schedule 21.05.2012