aegida-console / app / api / auth / me / route.ts
route.ts
Raw
import { AuthError, authenticateRequest, toAuthIdentity } from "@/lib/auth/server";
import { getPool } from "@/lib/db/pool";
import { findUserById } from "@/lib/db/users";

const noStoreHeaders = { "Cache-Control": "no-store" };

export async function GET(request: Request): Promise<Response> {
  try {
    const token = await authenticateRequest(request);
    const user = await findUserById(getPool(), token.id);

    if (!user || user.email !== token.email) {
      return Response.json(
        { error: "Unauthorized" },
        { status: 401, headers: noStoreHeaders },
      );
    }

    return Response.json(
      { user: toAuthIdentity(user) },
      { headers: noStoreHeaders },
    );
  } catch (error) {
    return Response.json(
      {
        error:
          error instanceof AuthError
            ? "Unauthorized"
            : "Сервис аутентификации временно недоступен",
      },
      { status: error instanceof AuthError ? 401 : 503, headers: noStoreHeaders },
    );
  }
}