import "server-only";
import { cookies } from "next/headers";
import { redirect } from "next/navigation";
import type { Role } from "@prisma/client";
import { db } from "./db";
import { COOKIE_SESSION, lireSession } from "./session";

/** Utilisateur connecté, ou redirection vers la page de connexion. */
export async function utilisateurCourant() {
  const session = await lireSession((await cookies()).get(COOKIE_SESSION)?.value);
  if (!session) redirect("/connexion");
  const utilisateur = await db.utilisateur.findUnique({ where: { id: session.uid } });
  if (!utilisateur || !utilisateur.actif) redirect("/connexion");
  return utilisateur;
}

export async function exigerRole(...roles: Role[]) {
  const utilisateur = await utilisateurCourant();
  if (!roles.includes(utilisateur.role)) redirect("/");
  return utilisateur;
}

/** Peut modifier les dossiers (création, statuts, procédure). */
export function peutModifierDossiers(role: Role) {
  return role !== "TERRAIN";
}
