src/Security/SessionIdleHandler.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Security;
  3. use http\Env\Request;
  4. use Symfony\Component\HttpKernel\HttpKernelInterface;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  7. use Symfony\Component\Routing\RouterInterface;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  10. class SessionIdleHandler
  11. {
  12.     protected $session;
  13.     protected $securityToken;
  14.     protected $router;
  15.     protected $maxIdleTime;
  16.     public function __construct($maxIdleTimeSessionInterface $sessionTokenStorageInterface $securityTokenRouterInterface $router)
  17.     {
  18.         $this->session $session;
  19.         $this->securityToken $securityToken;
  20.         $this->router $router;
  21.         $this->maxIdleTime $maxIdleTime;
  22.     }
  23.     public function onKernelRequest(RequestEvent $event)
  24.     {
  25.         if (HttpKernelInterface::MASTER_REQUEST != $event->getRequestType()) {
  26.             return;
  27.         }
  28.         if ($this->maxIdleTime 0) {
  29.             $this->session->start();
  30.             $lapse time() - $this->session->getMetadataBag()->getLastUsed();
  31.             if ($lapse $this->maxIdleTime) {
  32.                 $this->securityToken->setToken(null);
  33.                 $this->session->getFlashBag()->set('info''You have been logged out due to inactivity.');
  34.                 // Change the route if you are not using FOSUserBundle.
  35.                 $event->setResponse(new RedirectResponse($this->router->generate('app_login')));
  36.             }
  37.         }
  38.     }
  39. }