src/ProPneu/Service/MetierManagerBundle/EventListener/PpCheckRoleListener.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\ProPneu\Service\MetierManagerBundle\EventListener;
  3. use App\ProPneu\Service\MetierManagerBundle\Utils\EntityName;
  4. use App\ProPneu\Service\MetierManagerBundle\Utils\RoleName;
  5. use App\ProPneu\Service\MetierManagerBundle\Utils\ServiceName;
  6. use Symfony\Component\DependencyInjection\Container;
  7. use Symfony\Component\HttpFoundation\RedirectResponse;
  8. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  9. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  10. use Symfony\Component\Routing\RouterInterface;
  11. class PpCheckRoleListener
  12. {
  13.     private $_router;
  14.     private $_container;
  15.     /**
  16.      * RequestListener constructor.
  17.      * @param RouterInterface $_router
  18.      * @param Container $_container
  19.      */
  20.     public function __construct(RouterInterface $_routerContainer $_container)
  21.     {
  22.         $this->_router    $_router;
  23.         $this->_container $_container;
  24.     }
  25.     /**
  26.      * @param GetResponseEvent $_event
  27.      */
  28.     public function onRequest(GetResponseEvent $_event)
  29.     {
  30.         $_utils_manager     $this->_container->get(ServiceName::SRV_METIER_UTILS);
  31.         $_user_role_manager $this->_container->get(ServiceName::SRV_METIER_ROLE);
  32.         $_user_connected    $_utils_manager->getUserConnected();
  33.         $_current_route     $_event->getRequest()->get('_route');
  34.         $_current_url       $_event->getRequest()->getUri();
  35.         $_context           $this->_router->getContext();
  36.         $_branche_paramater $_event->getRequest()->get('_branche');
  37.         $_branche_name   $_utils_manager->findOneEntityByFilter(EntityName::PP_BRANCHE, [
  38.             'brcLibelle' => $_branche_paramater
  39.         ]);
  40.         if (!$_user_connected && strpos($_current_url'admin') !== false) {
  41.             $_response = new RedirectResponse($this->_router->generate('eternaly_login'));
  42.             $_event->setResponse($_response);
  43.         }
  44.         if('liip_imagine_filter' === $_current_route) {
  45.             return;
  46.         }
  47.         if ('dashboard_index' === $_current_route) {
  48.             return;
  49.         }
  50.         if ('home_index' === $_current_route) {
  51.             return;
  52.         }
  53.         if (is_null($_current_route)) {
  54.             return;
  55.         }
  56.         if ($_event->getRequest()->isXmlHttpRequest()) {
  57.             $_context->setParameter('_branche'$_branche_name $_branche_name->getBrcLibelle() : 'speed_service');
  58.             return;
  59.         }
  60.         if (is_object($_user_connected)) {
  61.             $_user_role_id $_user_connected->getPpUserRole() ? $_user_connected->getPpUserRole()->getId() : 0;
  62.             if (!in_array($_user_role_id, [RoleName::ID_ROLE_SUPERADMINRoleName::ID_ROLE_ADMIN])) {
  63.                 $_has_autorization $_user_role_manager->checkAutorisation($_current_route$_user_role_id);
  64.                 if (!$_has_autorization) {
  65.                     $_utils_manager->setFlash('error''Accès non autorisĂ©');
  66.                     $_response = new RedirectResponse($this->_router->generate('dashboard_index', [
  67.                         '_branche' => $_branche_name $_branche_name->getBrcLibelle() : 'speed_service'
  68.                     ]));
  69.                     $_event->setResponse($_response);
  70.                 }
  71.             }
  72.         }
  73.         if ($_current_route == 'fos_user_security_login') {
  74.             throw new NotFoundHttpException('404 not found');
  75.         }
  76.     }
  77. }