Files
towercontrol/src/app/api/auth/register/route.ts
Julien Froidefond 17b86b6087 feat: add authentication support and user model
- Updated `env.example` to include NextAuth configuration for authentication.
- Added `next-auth` dependency to manage user sessions.
- Introduced `User` model in Prisma schema with fields for user details and password hashing.
- Integrated `AuthProvider` in layout for session management across the app.
- Enhanced `Header` component with `AuthButton` for user authentication controls.
2025-09-30 21:49:52 +02:00

60 lines
1.4 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server'
import { usersService } from '@/services/users'
export async function POST(request: NextRequest) {
try {
const { email, name, firstName, lastName, password } = await request.json()
// Validation
if (!email || !password) {
return NextResponse.json(
{ error: 'Email et mot de passe 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 emailExists = await usersService.emailExists(email)
if (emailExists) {
return NextResponse.json(
{ error: 'Un compte avec cet email existe déjà' },
{ status: 400 }
)
}
// Créer l'utilisateur
const user = await usersService.createUser({
email,
name,
firstName,
lastName,
password,
})
return NextResponse.json({
message: 'Compte créé avec succès',
user: {
id: user.id,
email: user.email,
name: user.name,
firstName: user.firstName,
lastName: user.lastName,
}
})
} catch (error) {
console.error('Registration error:', error)
return NextResponse.json(
{ error: 'Erreur lors de la création du compte' },
{ status: 500 }
)
}
}