src/Aqarmap/Bundle/UserBundle/EventListener/ConfigureMenuEventSubscriber.php line 35

Open in your IDE?
  1. <?php
  2. namespace Aqarmap\Bundle\UserBundle\EventListener;
  3. use Aqarmap\Bundle\MainBundle\Event\ConfigureMenuEvent;
  4. use Aqarmap\Bundle\PaymentBundle\Constant\GatewayTypes;
  5. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  6. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  7. use Symfony\Contracts\Translation\TranslatorInterface;
  8. class ConfigureMenuEventSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
  9. {
  10.     protected TranslatorInterface $translator;
  11.     /**
  12.      * @var TokenStorageInterface
  13.      */
  14.     private $tokenStorage;
  15.     /**
  16.      * @var AuthorizationCheckerInterface
  17.      */
  18.     private $authorizationChecker;
  19.     public function __construct(
  20.         TranslatorInterface $translator,
  21.         TokenStorageInterface $tokenStorage,
  22.         AuthorizationCheckerInterface $authorizationChecker
  23.     ) {
  24.         $this->translator $translator;
  25.         $this->tokenStorage $tokenStorage;
  26.         $this->authorizationChecker $authorizationChecker;
  27.     }
  28.     public function onAdminSidebarMenuConfigure(ConfigureMenuEvent $event): void
  29.     {
  30.         $menu $event->getMenu();
  31.         $userRole $this->authorizationChecker;
  32.         if ($userRole->isGranted('ROLE_SUPPORT')
  33.             || $userRole->isGranted('ROLE_USER_MANAGEMENT')
  34.             || $userRole->isGranted('ROLE_MARKETING')
  35.             || $userRole->isGranted('ROLE_IMPORT_USERS')
  36.             || $userRole->isGranted('ROLE_IMPORT_USERS_UGC')
  37.             || $userRole->isGranted('ROLE_IMPORT_DEVELOPER_USERS')
  38.             || $userRole->isGranted('ROLE_CREDIT_PACKAGE')) {
  39.             $menu
  40.                 ->addChild('users_group', ['uri' => '#'])
  41.                 ->setLabel('Users Management')
  42.                 ->setExtra('position'50)
  43.                 ->setExtra('icon''users');
  44.         }
  45.         if ($userRole->isGranted('ROLE_SUPPORT')) {
  46.             $menu['users_group']
  47.                 ->addChild('Users', ['route' => 'aqarmap_admin_user'])
  48.                 ->setLabel($this->translator->trans('layout.admin.users'))
  49.                 ->setExtra('position'51)
  50.                 ->setExtra('icon''user');
  51.         }
  52.         if ($userRole->isGranted('ROLE_IMPORT_USERS')) {
  53.             $menu['users_group']
  54.                 ->addChild('import_users', ['route' => 'aqarmap_admin_import_users'])
  55.                 ->setLabel($this->translator->trans('layout.admin.import_users'))
  56.                 ->setExtra('position'52)
  57.                 ->setExtra('icon''upload');
  58.         }
  59.         if ($userRole->isGranted('ROLE_IMPORT_USERS_UGC')) {
  60.             $menu['users_group']
  61.                 ->addChild('import_users_UGC', ['route' => 'aqarmap_admin_import_users_ugc'])
  62.                 ->setLabel($this->translator->trans('layout.admin.import_users_ugc.label'))
  63.                 ->setExtra('position'53)
  64.                 ->setExtra('icon''upload');
  65.         }
  66.         if ($userRole->isGranted('ROLE_IMPORT_DEVELOPER_USERS')) {
  67.             $menu['users_group']
  68.                 ->addChild('import_developer_users', ['route' => 'aqarmap_admin_import_developer_users'])
  69.                 ->setLabel($this->translator->trans('layout.admin.import_developer_users'))
  70.                 ->setExtra('position'61)
  71.                 ->setExtra('icon''upload');
  72.         }
  73.         if ($userRole->isGranted('ROLE_USER_MANAGEMENT')) {
  74.             // Packages
  75.             $menu['users_group']
  76.                 ->addChild('user_team', ['route' => 'aqarmap_admin_team_index'])
  77.                 ->setLabel($this->translator->trans('team.admin_label'))
  78.                 ->setExtra('position'58)
  79.                 ->setExtra('icon''users');
  80.             // Transactions
  81.             $menu['users_group']
  82.                 ->addChild('credit_transactions', ['route' => 'aqarmap_admin_credit_transaction'])
  83.                 ->setLabel($this->translator->trans('layout.admin.credit_transactions.title'))
  84.                 ->setExtra('position'55)
  85.                 ->setExtra('icon''bitcoin')
  86.                 ->setExtra('brand_icon'true);
  87.             // Payment
  88.             $menu['users_group']
  89.                 ->addChild('payment_transactions', [
  90.                     'route' => 'aqarmap_admin_payment_transactions',
  91.                     'routeParameters' => [
  92.                         'status' => 'approved',
  93.                         'order' => 'approval',
  94.                     ],
  95.                 ])
  96.                 ->setLabel($this->translator->trans('layout.admin.payment_transactions'))
  97.                 ->setExtra('position'56)
  98.                 ->setExtra('icon''cc-visa')
  99.                 ->setExtra('brand_icon'true);
  100.             $menu['users_group']
  101.             ->addChild('manual_fawry', [
  102.                 'route' => 'aqarmap_admin_payment_transactions',
  103.                 'routeParameters' => [
  104.                     'gateway' => GatewayTypes::MANUAL_FAWRY,
  105.                     'order' => 'approval',
  106.                 ],
  107.             ])
  108.             ->setLabel($this->translator->trans('layout.admin.manual_fawry'))
  109.             ->setExtra('position'62)
  110.             ->setExtra('icon''cc-visa')
  111.             ->setExtra('brand_icon'true);
  112.         }
  113.         if ($userRole->isGranted('ROLE_CREDIT_PACKAGE')) {
  114.             $menu['users_group']
  115.                 ->addChild('credit_package', ['route' => 'aqarmap_admin_package'])
  116.                 ->setLabel($this->translator->trans('layout.admin.credit_package'))
  117.                 ->setExtra('position'54)
  118.                 ->setExtra('icon''bullhorn');
  119.         }
  120.     }
  121.     public function onMainNavbarMenuConfigure(ConfigureMenuEvent $event): void
  122.     {
  123.         $menu $event->getMenu();
  124.         if ($this->getAuthorizationChecker()->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  125.             // Logout
  126.             $username $this->getTokenStorage()->getToken()->getUser()->getUsername();
  127.             $menu
  128.                 ->addChild('logout', ['route' => 'app_logout'])
  129.                 ->setLabel($this->translator->trans('layout.logout_username', ['%username%' => $username]))
  130.                 ->setExtra('position'1000);
  131.         } else {
  132.             // Register
  133.             $menu
  134.                 ->addChild('register', ['route' => 'app_register'])
  135.                 ->setLabel($this->translator->trans('layout.register'))
  136.                 ->setExtra('position'900);
  137.             // Login
  138.             $menu
  139.                 ->addChild('login', ['route' => 'app_login'])
  140.                 ->setLabel($this->translator->trans('layout.signin'))
  141.                 ->setExtra('position'800);
  142.         }
  143.     }
  144.     /**
  145.      * @return TokenStorageInterface
  146.      */
  147.     private function getTokenStorage()
  148.     {
  149.         return $this->tokenStorage;
  150.     }
  151.     /**
  152.      * @return AuthorizationCheckerInterface
  153.      */
  154.     private function getAuthorizationChecker()
  155.     {
  156.         return $this->authorizationChecker;
  157.     }
  158.     /**
  159.      * @return array<string, mixed>
  160.      */
  161.     public static function getSubscribedEvents(): array
  162.     {
  163.         return ['aqarmap.main.admin_sidebar_menu_configure' => 'onAdminSidebarMenuConfigure'];
  164.     }
  165. }