src/Security/SessionIdleHandler.php line 32
<?phpnamespace App\Security;use Symfony\Component\HttpKernel\HttpKernelInterface;use Symfony\Component\HttpKernel\Event\RequestEvent;use Symfony\Component\HttpFoundation\Session\SessionInterface;use Symfony\Component\Routing\RouterInterface;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;use Symfony\Component\HttpFoundation\RequestStack;class SessionIdleHandler{protected $session;protected TokenStorageInterface $securityToken;protected RouterInterface $router;protected $maxIdleTime;protected RequestStack $requestStack;public function __construct($maxIdleTime, RequestStack $requestStack, TokenStorageInterface $securityToken, RouterInterface $router){$this->requestStack = $requestStack;$this->securityToken = $securityToken;$this->router = $router;$this->maxIdleTime = $maxIdleTime;}public function onKernelRequest(RequestEvent $event): void{$this->session = $this->requestStack->getSession();if (HttpKernelInterface::MASTER_REQUEST != $event->getRequestType()) {return;}if ($this->maxIdleTime > 0) {$this->session->start();$lapse = time() - $this->session->getMetadataBag()->getLastUsed();if ($lapse > $this->maxIdleTime) {$this->securityToken->setToken(null);$this->session->getFlashBag()->set('info', 'You have been logged out due to inactivity.');// logout is defined in security.yaml. See 'Logging Out' section here:// https://symfony.com/doc/4.1/security.html$event->setResponse(new RedirectResponse($this->router->generate('app_logout')));}}}}