import { NextResponse } from "next/server";

export const AUTH_COOKIE_NAME = "agnet_token";
export const AUTH_COOKIE_MAX_AGE = 7 * 24 * 60 * 60;

/** Dev mock tokens from CORE_API_USE_MOCK — invalid against core-api JWT. */
export function isLegacyDevMockToken(token: string): boolean {
  return token.startsWith("dev.");
}

/** In-memory mock session ids (session_abc123) — not valid in PostgreSQL. */
export function isLegacyMockSessionId(id: string): boolean {
  return /^session_[a-z0-9]+$/.test(id);
}

export function clearAuthCookie(response: NextResponse): void {
  response.cookies.set(AUTH_COOKIE_NAME, "", {
    httpOnly: true,
    secure: process.env.NODE_ENV === "production",
    sameSite: "lax",
    path: "/",
    maxAge: 0,
  });
}

export function setAuthCookie(response: NextResponse, token: string): void {
  response.cookies.set(AUTH_COOKIE_NAME, token, {
    httpOnly: true,
    secure: process.env.NODE_ENV === "production",
    sameSite: "lax",
    path: "/",
    maxAge: AUTH_COOKIE_MAX_AGE,
  });
}

export function unauthorizedWithClearedCookie(
  response: NextResponse,
): NextResponse {
  clearAuthCookie(response);
  return response;
}
