Отключите объекты / перенаправление в пакете EasyAdmin для указанных c ролей - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь установить разрешения для некоторых объектов в наборе EasyAdmin Symfony.

menu:
  - { entity: 'Team', permission: ['ROLE_SUPER_ADMIN','ROLE_ADMIN'] }
 entities:
Team:
  class: App\Entity\Team
  list:
    item_permission: ['ROLE_SUPER_ADMIN','ROLE_ADMIN']
  show:
  ...

Когда я вхожу в систему как ROLE_USES, как и ожидалось, командный объект не отображается в меню, но я я все еще перенаправлен в командный объект:

localhost/admin/?action=list&entity=Team

image

Просто не разрешено просматривать или редактировать объект, но он по-прежнему доступен

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Использовать

События EasyAdmin PRE_LIST, POST_LIST

Использовать любые в зависимости от ваших требований Пример

private $tokenStorage;
private $authorizationChecker;
public function __construct(TokenStorageInterface $tokenStorage, AuthorizationCheckerInterface $authorizationChecker)
{
    $this->tokenStorage = $tokenStorage;
    $this->authorizationChecker = $authorizationChecker;
}
public static function getSubscribedEvents()
{
    return [
        EasyAdminEvents::PRE_LIST => 'onPrelist',
    ];
}


public function onPrelist(GenericEvent $event)
{
    $config = $event->getSubject();
    if ($config['class'] == <Entity>::class) {
        $this->denyAccessUnless();
    }
}
private function denyAccessUnless()
{
    if (!$this->authorizationChecker->isGranted(<ROLE To Check>)) {
        throw new AccessDeniedException();
    }
}

Дополнительные события: https://symfony.com/doc/master/bundles/EasyAdminBundle/book/complex-dynamic-backends.html#customization основанное-на symfony -СОБЫТИЯ

0 голосов
/ 16 января 2020

ответ прост:

https://symfony.com/doc/master/bundles/EasyAdminBundle/book/menu-configuration.html#changing -the-backend-index-page

установка другого объекта в значение по умолчанию

...