src/Security/SessionIdleHandler.php line 30
<?phpnamespace App\Security;use Symfony\Component\HttpFoundation\Session\Session;use Symfony\Component\Routing\RouterInterface;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Component\HttpKernel\Event\RequestEvent;use Symfony\Component\HttpKernel\HttpKernelInterface;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;class SessionIdleHandler{private TokenStorageInterface $securityToken;private RouterInterface $router;private int $maxIdleTime;public function __construct(int $maxIdleTime, TokenStorageInterface $securityToken, RouterInterface $router){$this->securityToken = $securityToken;$this->router = $router;$this->maxIdleTime = $maxIdleTime;}public function onKernelRequest(RequestEvent $event){if (HttpKernelInterface::MASTER_REQUEST != $event->getRequestType()) {return;}$session = $event->getRequest()->getSession();#$session = new Session();if($session->get('sessiontimeout')){if($session->get('sessiontimeout') > 0){$this->maxIdleTime = $session->get('sessiontimeout') * 60;}}if ($this->maxIdleTime > 0){$session->start();$lapse = time() - $session->getMetadataBag()->getLastUsed();if ($lapse > $this->maxIdleTime) {$this->securityToken->setToken(null);$event->setResponse(new RedirectResponse($this->router->generate('app_logout'))); // or whatever route you need}}}}