import { NextResponse } from "next/server"; import { prisma } from "@/lib/prisma"; import bcrypt from "bcryptjs"; export async function POST(request: Request) { try { const body = await request.json(); const { email, username, password } = body; if (!email || !username || !password) { return NextResponse.json( { error: "Tous les champs sont requis" }, { status: 400 } ); } if (password.length < 6) { return NextResponse.json( { error: "Le mot de passe doit contenir au moins 6 caractères" }, { status: 400 } ); } // Vérifier si l'email existe déjà const existingUser = await prisma.user.findFirst({ where: { OR: [{ email }, { username }], }, }); if (existingUser) { return NextResponse.json( { error: "Cet email ou nom d'utilisateur est déjà utilisé" }, { status: 400 } ); } // Hasher le mot de passe const hashedPassword = await bcrypt.hash(password, 10); // Créer l'utilisateur const user = await prisma.user.create({ data: { email, username, password: hashedPassword, }, }); return NextResponse.json( { message: "Compte créé avec succès", userId: user.id }, { status: 201 } ); } catch (error) { console.error("Registration error:", error); return NextResponse.json( { error: "Une erreur est survenue lors de l'inscription" }, { status: 500 } ); } }