import { headers } from "next/headers";
import { redirect } from "next/navigation";
import { auth } from "./auth";
import { prisma } from "./db";

export async function currentUser() {
  const h = await headers();
  const session = await auth.api.getSession({ headers: h });
  if (!session?.user) return null;

  // Fetch full row including role
  const user = await prisma.user.findUnique({
    where: { id: session.user.id },
    select: { id: true, email: true, name: true, image: true, role: true },
  });
  return user;
}

export async function requireUser() {
  const user = await currentUser();
  if (!user) redirect("/login?from=/admin");
  return user;
}

export async function requireAdmin() {
  const user = await currentUser();
  if (!user) redirect("/login?from=/admin");
  if (user.role !== "admin" && user.role !== "editor") redirect("/");
  return user;
}
