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.             $_branche_name $this->_container->get('session')->get('current_branche');
  42.             $_response = new RedirectResponse($this->_router->generate('eternaly_login', ['_branche' => $_branche_paramater]));
  43.             $_event->setResponse($_response);
  44.         }
  45.         if ('dashboard_index' === $_current_route) {
  46.             return;
  47.         }
  48.         if ('home_index' === $_current_route) {
  49.             return;
  50.         }
  51.         if (is_null($_current_route)) {
  52.             return;
  53.         }
  54.         if ($_event->getRequest()->isXmlHttpRequest()) {
  55.             $_context->setParameter('_branche'$_branche_name $_branche_name->getBrcLibelle() : 'mvdesign');
  56.             return;
  57.         }
  58.         if (is_object($_user_connected)) {
  59.             $_user_role_id $_user_connected->getPpUserRole() ? $_user_connected->getPpUserRole()->getId() : 0;
  60.             if (!in_array($_user_role_id, [RoleName::ID_ROLE_SUPERADMINRoleName::ROLE_ADMINISTRATEUR])) {
  61.                 $_has_autorization $_user_role_manager->checkAutorisation($_current_route$_user_role_id);
  62.                 if (!$_has_autorization) {
  63.                     $_utils_manager->setFlash('error''Accès non autorisĂ©');
  64.                     $_response = new RedirectResponse($this->_router->generate('dashboard_index', [
  65.                         '_branche' => $_branche_name->getBrcLibelle()
  66.                     ]));
  67.                     $_event->setResponse($_response);
  68.                 }
  69.             }
  70.         }
  71.         if ($_current_route == 'fos_user_security_login') {
  72.             throw new NotFoundHttpException('404 not found');
  73.         }
  74.     }
  75. }