import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";

// Better Auth session cookie names (plain in dev, __Secure- prefixed over
// HTTPS). The authoritative check happens client-side (AppAuthGuard) and on the
// API; this is an optimistic redirect to avoid flashing the app when clearly
// signed out.
const SESSION_COOKIES = [
  "better-auth.session_token",
  "__Secure-better-auth.session_token",
];

export function proxy(request: NextRequest) {
  const hasSession = SESSION_COOKIES.some((name) =>
    request.cookies.has(name),
  );

  if (!hasSession) {
    const url = request.nextUrl.clone();
    url.pathname = "/login";
    url.search = "";
    return NextResponse.redirect(url);
  }

  return NextResponse.next();
}

export const config = {
  // Run on all routes except the auth pages, Next internals and static assets.
  matcher: [
    "/((?!login|signup|verify-email|forgot-password|reset-password|onboarding|accept-invite|_next/static|_next/image|favicon.ico|temetro-logo.png|avatars).*)",
  ],
};
