shouldBeSkipped(tenancy()->getRoute($request))) { // Allow accessing central route in kernel identification return $next($request); } // Used with *route-level* identification, takes precedence over what may have been configured for global stack middleware TenancyUrlGenerator::$prefixRouteNames = false; if ($request->method() !== 'OPTIONS') { return $this->initializeTenancy($request, $next, $this->getPayload($request)); } return $next($request); } protected function getPayload(Request $request): string|null { if (static::$header && $request->hasHeader(static::$header)) { $payload = $request->header(static::$header); } elseif (static::$queryParameter && $request->has(static::$queryParameter)) { $payload = $request->get(static::$queryParameter); } elseif (static::$cookie && $request->hasCookie(static::$cookie)) { $payload = $request->cookie(static::$cookie); } else { $payload = null; } if (is_string($payload) || is_null($payload)) { return $payload; } throw new TenantCouldNotBeIdentifiedByRequestDataException($payload); } /** * Check if the request has the tenant payload. */ public function requestHasTenant(Request $request): bool { return (bool) $this->getPayload($request); } }