import type { NextAuthConfig } from "next-auth";

// Configuration partagée (sans adaptateur Prisma car incompatible Edge runtime du middleware)
export const authConfig: NextAuthConfig = {
  pages: {
    signIn: "/login",
    error: "/login",
  },
  callbacks: {
    authorized({ auth, request: { nextUrl } }) {
      const isLoggedIn = !!auth?.user;
      const isOnLogin = nextUrl.pathname === "/login";

      if (isOnLogin) {
        if (isLoggedIn) return Response.redirect(new URL("/", nextUrl));
        return true;
      }
      // Toutes les autres routes nécessitent une connexion
      return isLoggedIn;
    },
    async jwt({ token, user }) {
      if (user) {
        token.id = user.id;
        token.role = (user as { role?: string }).role;
      }
      return token;
    },
    async session({ session, token }) {
      if (token && session.user) {
        session.user.id = token.id as string;
        session.user.role = (token.role as string) || "RECEPTIONIST";
      }
      return session;
    },
  },
  providers: [], // Définis dans auth.ts pour usage hors Edge
  session: { strategy: "jwt" },
};
