vendor/sentry/sentry-symfony/src/EventListener/RequestListener.php line 43
<?phpdeclare(strict_types=1);namespace Sentry\SentryBundle\EventListener;use Sentry\State\HubInterface;use Sentry\State\Scope;use Sentry\UserDataBag;use Symfony\Component\HttpKernel\Event\ControllerEvent;use Symfony\Component\HttpKernel\Event\RequestEvent;/*** This listener ensures that a new {@see Scope} is created for* each request and that it is filled with useful information, e.g. the IP* address of the client.*/final class RequestListener{use KernelEventForwardCompatibilityTrait;/*** @var HubInterface The current hub*/private $hub;/*** Constructor.** @param HubInterface $hub The current hub*/public function __construct(HubInterface $hub/* , ?TokenStorageInterface $tokenStorage */){$this->hub = $hub;}/*** This method is called for each request handled by the framework and* fills the Sentry scope with information about the current user.** @param RequestEvent $event The event*/public function handleKernelRequestEvent(RequestEvent $event): void{if (!$this->isMainRequest($event)) {return;}$client = $this->hub->getClient();if (null === $client || !$client->getOptions()->shouldSendDefaultPii()) {return;}$this->hub->configureScope(static function (Scope $scope) use ($event): void {$user = $scope->getUser() ?? new UserDataBag();if (null === $user->getIpAddress()) {$user->setIpAddress($event->getRequest()->getClientIp());}$scope->setUser($user);});}/*** This method is called for each request handled by the framework and* sets the route on the current Sentry scope.** @param ControllerEvent $event The event*/public function handleKernelControllerEvent(ControllerEvent $event): void{if (!$this->isMainRequest($event)) {return;}$route = $event->getRequest()->attributes->get('_route');if (!\is_string($route)) {return;}$this->hub->configureScope(static function (Scope $scope) use ($route): void {$scope->setTag('route', $route);});}}