vendor/ibexa/admin-ui/src/lib/EventListener/MenuPermissionsListener.php line 42

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. declare(strict_types=1);
  7. namespace Ibexa\AdminUi\EventListener;
  8. use Ibexa\AdminUi\Menu\Event\ConfigureMenuEvent;
  9. use Ibexa\AdminUi\Menu\MainMenuBuilder;
  10. use Ibexa\Contracts\Core\Repository\PermissionResolver;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. class MenuPermissionsListener implements EventSubscriberInterface
  13. {
  14.     /** @var \Ibexa\Contracts\Core\Repository\PermissionResolver */
  15.     private $permissionResolver;
  16.     /**
  17.      * @param \Ibexa\Contracts\Core\Repository\PermissionResolver $permissionResolver
  18.      */
  19.     public function __construct(PermissionResolver $permissionResolver)
  20.     {
  21.         $this->permissionResolver $permissionResolver;
  22.     }
  23.     /**
  24.      * @return array
  25.      */
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [ConfigureMenuEvent::MAIN_MENU => 'checkPermissions'];
  29.     }
  30.     /**
  31.      * @param \Ibexa\AdminUi\Menu\Event\ConfigureMenuEvent $event
  32.      *
  33.      * @throws \Ibexa\Contracts\Core\Repository\Exceptions\InvalidArgumentException
  34.      */
  35.     public function checkPermissions(ConfigureMenuEvent $event): void
  36.     {
  37.         if (!$this->permissionResolver->hasAccess('setup''administrate')) {
  38.             $menu $event->getMenu();
  39.             $menu->removeChild(MainMenuBuilder::ITEM_ADMIN);
  40.         }
  41.     }
  42. }
  43. class_alias(MenuPermissionsListener::class, 'EzSystems\EzPlatformAdminUi\EventListener\MenuPermissionsListener');