import { NextResponse } from "next/server";

import { extractAuthToken, verifyJwtToken } from "@/lib/jwt";

export function requireAuth(request: Request) {
  const cookieToken = request.headers
    .get("cookie")
    ?.split("; ")
    .find((item) => item.startsWith("auth_token="))
    ?.split("=")[1];

  const token = cookieToken ?? extractAuthToken(request.headers.get("authorization"));

  if (!token) {
    return NextResponse.json({ message: "Unauthorized" }, { status: 401 });
  }

  try {
    verifyJwtToken(token);
    return null;
  } catch {
    return NextResponse.json({ message: "Unauthorized" }, { status: 401 });
  }
}
