cookie(self::COOKIE_NAME); if (! is_string($token) || $token === '') { return $this->unauthorized(); } $session = $this->sessionRepo->findByToken($token); if ($session === null) { return $this->unauthorized(); } if ($session->isExpired($this->clock->now())) { $this->sessionRepo->deleteByToken($token); return $this->unauthorized(); } $request->attributes->set('user', $session->getUser()); return $next($request); } private function unauthorized(): JsonResponse { return new JsonResponse(['error' => 'unauthenticated'], 401); } }