src/EventListener/SecurityListener.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\User;
  4. use App\Repository\UserRepository;
  5. use App\Repository\DatedocumentRepository;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  11. class SecurityListener implements EventSubscriberInterface
  12. {
  13.     private $session;
  14.     private $dateDocRepo;
  15.     private $userRepo;
  16.     private $tokenStorage;
  17.     public function __construct(
  18.         SessionInterface $session
  19.         DatedocumentRepository $dateDocRepo
  20.         UserRepository $userRepo,
  21.         TokenStorageInterface $tokenStorage
  22.     ) {
  23.         $this->session $session;
  24.         $this->dateDocRepo $dateDocRepo;
  25.         $this->userRepo $userRepo;
  26.         $this->tokenStorage $tokenStorage;
  27.     }
  28.     public function onKernelRequest(RequestEvent $event)
  29.     {
  30.         // Utiliser TokenStorage au lieu de unserialize
  31.         $token $this->tokenStorage->getToken();
  32.         
  33.         if ($token && $token->getUser() instanceof User) {
  34.             $user $token->getUser();
  35.             $userFound $this->userRepo->findOneById($user->getId()); 
  36.             $dateAccepted null;
  37.             $plateform 1;
  38.             // Vérifier que l'utilisateur a des rôles
  39.             $roles $userFound->getRoles();
  40.             if (!empty($roles)) {
  41.                 switch ($roles[0]) {
  42.                     case 'ROLE_PHARMACIE':
  43.                         $plateform 3;
  44.                         break;
  45.                     case 'ROLE_GROSSISTE':
  46.                         $plateform 4;
  47.                         break;
  48.                     case 'ROLE_PRESCRIPTEUR':
  49.                         $plateform 5;
  50.                         break;
  51.                     default:
  52.                         $plateform 1
  53.                         break;
  54.                 }
  55.             }
  56.             $dateModifCGU $this->dateDocRepo->findDateModificationCGU($plateform);
  57.             
  58.             if (!is_null($dateModifCGU)) {
  59.                 $dateModifCGU $dateModifCGU[0]['datemodification']->format('d-m-Y');
  60.             }
  61.             if (!is_null($userFound->isCguaccepted())) {
  62.                 $dateAccepted $userFound->isCguaccepted()->format('d-m-Y');
  63.             }
  64.             if ($dateAccepted $dateModifCGU) {
  65.                 $this->session->set('cgu_session'true);
  66.             } else {
  67.                 $this->session->set('cgu_session'false);
  68.             } 
  69.         }
  70.     }
  71.     public static function getSubscribedEvents()
  72.     {
  73.         return [
  74.             KernelEvents::REQUEST => 'onKernelRequest',
  75.         ];
  76.     }
  77. }