src/Listener/RedirectListener.php line 41

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: frup64362
  5.  * Date: 07/10/2016
  6.  * Time: 11:56
  7.  */
  8. namespace App\Listener;
  9. use App\Entity\RefRole;
  10. use App\Entity\UtilisateurInformation;
  11. use App\Services\JsonResults;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Component\DependencyInjection\ContainerInterface;
  14. use Symfony\Component\HttpFoundation\RedirectResponse;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\HttpFoundation\Session\Session;
  17. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  18. use Symfony\Component\Serializer\Encoder\JsonDecode;
  19. use Symfony\Component\Serializer\Encoder\JsonEncode;
  20. use Symfony\Component\Serializer\Encoder\JsonEncoder;
  21. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  22. class RedirectListener implements EventSubscriberInterface
  23. {
  24.     /**
  25.      * @var JsonEncoder
  26.      */
  27.     private $jsonEncoder;
  28.     public function __construct(private readonly ContainerInterface $container, private readonly EntityManagerInterface $entityManager)
  29.     {
  30.     }
  31.     public static function getSubscribedEvents()
  32.     {
  33.         return [
  34.             RequestEvent::class => 'onKernelRequest',
  35.         ];
  36.     }
  37.     public function onKernelRequest(\Symfony\Component\HttpKernel\Event\RequestEvent $event)
  38.     {
  39.         $userConnected $this->container->get('security.token_storage')->getToken();
  40.         $user $userConnected $userConnected->getUser() : null;
  41.         $url = ["api_liste_rendezvous""api_get_odm""ctsweb_affichage_evenement""api_liste_conge"];
  42.         if (in_array($event->getRequest()->attributes->get('_route'), $url)) {
  43.             $idCts $event->getRequest()->attributes->get('idUser');
  44.             if ($idCts != 0) {
  45.                 if ($user->getUtilisateur()->getIdRole() != RefRole::ROLE_CTS || $user->getUtilisateur()->getIdRole() != 12) {
  46.                     $listCts $this->entityManager->getRepository(UtilisateurInformation::class)->findMyCts($idCts$user);
  47.                     if ((is_countable($listCts) ? count($listCts) : 0) == 0) {
  48.                         $data = ['success' => false'data' => 'access denied'];
  49.                         $event->setResponse(new Response($this->container->get('jms_serializer')->serialize($data'json')));
  50.                     }
  51.                 } else {
  52.                     $data = ['success' => false'data' => 'access denied'];
  53.                     $event->setResponse(new Response($this->container->get('jms_serializer')->serialize($data'json')));
  54.                 }
  55.             }
  56.         }
  57.         // Droit d'accès d'un DS Lecteur
  58.         if ($user instanceof UtilisateurInformation && $user->getUtilisateur()->getIdRole() == RefRole::ROLE_LECTEUR) {
  59.             $current_url $event->getRequest()->attributes->get('_route');
  60.             $denied_urls = ['ctsweb_informations_generales''ctsweb_ordres_de_missions''ctsweb_tout_om''actualite_cts''detail_cts_article'];
  61.             if (in_array($current_url$denied_urls)) {
  62.                 $data = ['status' => 403'success' => false'data' => 'access denied'];
  63.                 $event->setResponse(new Response($this->container->get('jms_serializer')->serialize($data'json')));
  64.             }
  65.         }
  66.     }
  67. }