src/EventSubscriber/ControllerSubscriber.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. use Symfony\Component\Security\Core\Security;
  8. use App\Entity\PresenceControleur1;
  9. use App\Entity\Utilisateurs;
  10. class ControllerSubscriber implements EventSubscriberInterface
  11. {
  12.     private $em;
  13.     private $security;
  14.     public function __construct(EntityManagerInterface $emSecurity $security)
  15.     {
  16.         $this->em $em;
  17.         $this->security $security;
  18.     }
  19.     public function onKernelController(RequestEvent $event): void
  20.     {
  21.         $request $event->getRequest();
  22.         if (
  23.             !$event->isMainRequest()
  24.             || $request->isXmlHttpRequest()
  25.             || 'login' === $request->attributes->get('_route')
  26.             || 'password_forgot' === $request->attributes->get('_route')
  27.             || 'password_reset' === $request->attributes->get('_route')
  28.             || '_profiler_home' === $request->attributes->get('_route')
  29.         ) {
  30.             return;
  31.         }
  32.         //dd($request->server->get('HTTP_REFERER'));
  33.         //dd($request->attributes->get('_route'));
  34.         if($this->security->getUser() != null){
  35.             $user $this->em->getRepository(Utilisateurs::class)->find($this->security->getUser()->getId());
  36.             if($user->getDroits()->getId() == || $user->getDroits()->getId() == 24 || $user->getDroits()->getId() == 15 || $user->getDroits()->getId() == 29){
  37.                 $date = new \DateTime();
  38.                 $checkPresence $this->em->getRepository(PresenceControleur1::class)->findOneBy(array(
  39.                         'datePresence' => $date,
  40.                         'controleur' => $user->getId()
  41.                     )
  42.                 );
  43.                 if($checkPresence == null){
  44.                     $newPresence = new PresenceControleur1;
  45.                     $newPresence->setDatePresence(new \Datetime)
  46.                         ->setControleur($user);
  47.                     $this->em->persist($newPresence);
  48.                     $this->em->flush();
  49.                 }
  50.             }
  51.             if($user->getLastUri() !== $request->server->get('HTTP_REFERER'
  52.                 && strstr($request->server->get('HTTP_REFERER'), '/fichecontrole/') === false 
  53.                 && strstr($request->server->get('HTTP_REFERER'), '/fichetechnique/') === false 
  54.                 && strstr($request->server->get('HTTP_REFERER'), 'login') === false
  55.                 && strstr($request->server->get('HTTP_REFERER'), '/retouratelier/') === false
  56.                 && strstr($request->server->get('HTTP_REFERER'), '/mpseule/') === false
  57.                 && strstr($request->server->get('HTTP_REFERER'), '/envoibase/') === false
  58.                 && strstr($request->server->get('HTTP_REFERER'), '/demandedev/') === false
  59.                 && strstr($request->server->get('HTTP_REFERER'), '/fichelabo/') === false
  60.                 && strstr($request->server->get('HTTP_REFERER'), '/fichelabof/') === false
  61.                 && strstr($request->server->get('HTTP_REFERER'), '/industrielle/') === false
  62.                 && strstr($request->server->get('HTTP_REFERER'), '/ficheindustrielle/') === false
  63.                 && strstr($request->server->get('HTTP_REFERER'), '/fichecollectionf/') === false
  64.                 && strstr($request->server->get('HTTP_REFERER'), '/fichecollection/') === false
  65.                 && strstr($request->server->get('HTTP_REFERER'), '/historique-labos/') === false
  66.                 && strstr($request->server->get('HTTP_REFERER'), '/historique-collections/') === false
  67.                 && strstr($request->server->get('HTTP_REFERER'), '/historique-li/') === false
  68.             ){
  69.                 $user->setLastUri($request->server->get('HTTP_REFERER'));
  70.                 $this->em->persist($user);
  71.                 $this->em->flush();  
  72.             }
  73.         }
  74.     }
  75.     public static function getSubscribedEvents(): array
  76.     {
  77.         return [
  78.             KernelEvents::REQUEST => ['onKernelController', -1000]
  79.         ];
  80.     }
  81. }