*/ private const IGNORED_ROUTES = ['sitemap', 'robots']; public function handle(Request $request, Closure $next): Response { if (in_array($request->route()?->getName(), self::IGNORED_ROUTES, true)) { return $next($request); } try { $this->captureFirstTouch($request); } catch (Throwable $exception) { Log::warning('Falha ao capturar origem de marketing (ignorada; fail-open)', [ 'exception' => $exception::class, ]); } return $next($request); } private function captureFirstTouch(Request $request): void { if (! $request->hasSession()) { return; } $session = $request->session(); if ($session->has(MarketingOrigin::SESSION_KEY)) { return; } $origin = MarketingOrigin::capture( $request->query(), $request->headers->get('referer'), $request->getHost(), ); if ($origin === []) { return; } $session->put(MarketingOrigin::SESSION_KEY, $origin); } }