import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
import { verifyAndDecode } from "@/lib/auth";

const protectedPrefixes = ["/dashboard", "/quiz", "/label", "/admin", "/onboarding", "/codebook"];

export function proxy(request: NextRequest) {
  const path = request.nextUrl.pathname;
  const sessionCookie = request.cookies.get("session")?.value;

  const isValid = sessionCookie ? verifyAndDecode(sessionCookie) !== null : false;

  // If on login page with valid session, redirect to dashboard
  if (path === "/" && isValid) {
    return NextResponse.redirect(new URL("/dashboard", request.url));
  }

  // If on protected route without valid session, redirect to login
  const isProtected = protectedPrefixes.some((prefix) =>
    path.startsWith(prefix),
  );
  if (isProtected && !isValid) {
    return NextResponse.redirect(new URL("/", request.url));
  }

  return NextResponse.next();
}

export const config = {
  matcher: ["/((?!api|_next/static|_next/image|favicon.ico).*)"],
};
