getCookieParams(); $token = $cookies[self::COOKIE_NAME] ?? null; 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 = $request->withAttribute('user', $session->getUser()); return $handler->handle($request); } private function unauthorized(): ResponseInterface { $response = new Response(401); $response->getBody()->write( json_encode(['error' => 'unauthenticated']), ); return $response->withHeader('Content-Type', 'application/json'); } }