import { NextRequest, NextResponse } from 'next/server'; import prisma from '@/lib/prisma'; import bcrypt from 'bcryptjs'; export async function POST(request: NextRequest) { try { const { name, email, password } = await request.json(); // Basic validation if (!name || !email || !password) { return NextResponse.json( { error: 'Tous les champs sont obligatoires' }, { status: 400 } ); } if (password.length < 6) { return NextResponse.json( { error: 'Le mot de passe doit contenir au moins 6 caractères' }, { status: 400 } ); } // Check if user already exists const existingUser = await prisma.user.findUnique({ where: { email } }); if (existingUser) { return NextResponse.json( { error: 'Un utilisateur avec cet email existe déjà' }, { status: 400 } ); } // Hash password const hashedPassword = await bcrypt.hash(password, 12); // Create user const user = await prisma.user.create({ data: { name, email, password: hashedPassword, role: 'VISITOR' // Default role } }); // Omit password from response const { password: _, ...userWithoutPassword } = user; return NextResponse.json( { message: 'Compte créé avec succès', user: userWithoutPassword }, { status: 201 } ); } catch (error) { console.error('Registration error:', error); return NextResponse.json( { error: 'Une erreur est survenue lors de l\'inscription' }, { status: 500 } ); } }