vendor/symfony/security-core/Authentication/Token/Storage/UsageTrackingTokenStorage.php line 57
<?php/** This file is part of the Symfony package.** (c) Fabien Potencier <fabien@symfony.com>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace Symfony\Component\Security\Core\Authentication\Token\Storage;use Psr\Container\ContainerInterface;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Component\HttpFoundation\Session\SessionInterface;use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;use Symfony\Contracts\Service\ServiceSubscriberInterface;/*** A token storage that increments the session usage index when the token is accessed.** @author Nicolas Grekas <p@tchwork.com>*/final class UsageTrackingTokenStorage implements TokenStorageInterface, ServiceSubscriberInterface{private TokenStorageInterface $storage;private ContainerInterface $container;private bool $enableUsageTracking = false;public function __construct(TokenStorageInterface $storage, ContainerInterface $container){$this->storage = $storage;$this->container = $container;}public function getToken(): ?TokenInterface{if ($this->shouldTrackUsage()) {// increments the internal session usage index$this->getSession()->getMetadataBag();}return $this->storage->getToken();}public function setToken(TokenInterface $token = null): void{$this->storage->setToken($token);if ($token && $this->shouldTrackUsage()) {// increments the internal session usage index$this->getSession()->getMetadataBag();}}public function enableUsageTracking(): void{$this->enableUsageTracking = true;}public function disableUsageTracking(): void{$this->enableUsageTracking = false;}public static function getSubscribedServices(): array{return ['request_stack' => RequestStack::class,];}private function getSession(): SessionInterface{return $this->container->get('request_stack')->getSession();}private function shouldTrackUsage(): bool{return $this->enableUsageTracking && $this->container->get('request_stack')->getMainRequest();}}