import NextAuth from "next-auth"; import Credentials from "next-auth/providers/credentials"; export const { handlers, signIn, signOut, auth } = NextAuth({ providers: [ Credentials({ credentials: { email: { label: "Email", type: "email" }, password: { label: "Password", type: "password" }, }, async authorize(credentials) { if (!credentials?.email || !credentials?.password) { return null; } // Import dynamique pour éviter l'erreur Edge Runtime dans le middleware const { userService } = await import("@/services/user-service"); const user = await userService.verifyCredentials( credentials.email as string, credentials.password as string ); if (!user) { return null; } // Retourner l'utilisateur au format attendu par NextAuth return { id: user.uuid_id, email: user.email, name: `${user.first_name} ${user.last_name}`, firstName: user.first_name, lastName: user.last_name, teamId: user.team_id, }; }, }), ], pages: { signIn: "/login", }, session: { strategy: "jwt", }, callbacks: { async jwt({ token, user }) { // Lors de la première connexion, ajouter les infos custom au token if (user) { token.id = user.id; token.teamId = (user as any).teamId; token.firstName = (user as any).firstName; token.lastName = (user as any).lastName; } return token; }, async session({ session, token }) { // Ajouter les infos du token à la session if (token && session.user) { session.user.id = token.id as string; session.user.teamId = token.teamId as string; session.user.firstName = token.firstName as string; session.user.lastName = token.lastName as string; } return session; }, }, });