import { NextRequest, NextResponse } from "next/server"; import { userService } from "@/services"; import bcrypt from "bcryptjs"; export async function POST(request: NextRequest) { try { const { firstName, lastName, email, password, teamId } = await request.json(); // Validation des données if (!firstName || !lastName || !email || !password || !teamId) { return NextResponse.json( { error: "Tous les champs sont requis" }, { status: 400 } ); } // Vérifier si l'email existe déjà const existingUser = await userService.getUserByEmail(email); if (existingUser) { return NextResponse.json( { error: "Un utilisateur avec cet email existe déjà" }, { status: 409 } ); } // Hasher le mot de passe const saltRounds = 12; const passwordHash = await bcrypt.hash(password, saltRounds); // Créer l'utilisateur const newUser = await userService.createUser({ firstName, lastName, email, passwordHash, teamId, }); if (!newUser) { return NextResponse.json( { error: "Erreur lors de la création de l'utilisateur" }, { status: 500 } ); } // Retourner les informations de l'utilisateur créé // Le client devra appeler signIn() pour créer la session return NextResponse.json( { message: "Compte créé avec succès", user: { id: newUser.uuid_id, firstName: newUser.first_name, lastName: newUser.last_name, email: newUser.email, teamId: newUser.team_id, }, }, { status: 201 } ); } catch (error) { console.error("Register error:", error); return NextResponse.json( { error: "Erreur interne du serveur" }, { status: 500 } ); } }