src/EventListener/RequestListener.php line 53

Open in your IDE?
  1. <?php
  2. // App/EventListener/RequestListener.php
  3. namespace App\EventListener;
  4. use App\Entity\SessionInfos;
  5. use App\Entity\VisitedPages;
  6. use App\Kernel;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  9. use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
  10. use Symfony\Component\HttpKernel\HttpKernelInterface;
  11. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  12. use Symfony\Component\HttpFoundation\RedirectResponse;
  13. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  14. use Symfony\Component\Routing\RouterInterface;
  15. use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
  16. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  17. use Symfony\Component\DependencyInjection\ContainerInterface;
  18. use Symfony\Component\Validator\Constraints\DateTime;
  19. class RequestListener
  20. {
  21.     private $entityManager;
  22.     private $tokenStorage;
  23.     private $router;
  24.     private $securityChecker;
  25.     private $session;
  26.     private $kernel;
  27.     public function __construct
  28.     (
  29.         RouterInterface $router,
  30.         Kernel $kernel,
  31.         SessionInterface $session,
  32.         EntityManagerInterface $entityManager,
  33.         TokenStorageInterface $tokenStorage,
  34.         AuthorizationCheckerInterface $authorizationChecker
  35.     )
  36.     {
  37.         $this->entityManager $entityManager;
  38.         $this->tokenStorage $tokenStorage;
  39.         $this->router $router;
  40.         $this->securityChecker $authorizationChecker;
  41.         $this->session $session;
  42.         $this->kernel $kernel;
  43.     }
  44.     public function onKernelTerminate()
  45.     {
  46.         $token $this->tokenStorage->getToken();
  47.         $user = ($token) ?  $token->getUser() : null;
  48.         if(null != $user && 'anon.' != $user){
  49.             $session $this->entityManager->getRepository(SessionInfos::class)->findTodaySession($user->getId());
  50.             if(!empty($session)){
  51.                 $session->setLastActivityDate(new \DateTime('now'));
  52.                 $this->entityManager->persist($session);
  53.                 $this->entityManager->flush();
  54.             }else{
  55.                 $session = new SessionInfos();
  56.                 $session->setXutilisateur($user->getId());
  57.                 $session->setXprofile($user->getProfil());
  58.                 $this->entityManager->persist($session);
  59.                 $this->entityManager->flush();
  60.             }
  61.          }
  62.     }
  63. }