feat(backend): endpoint inscription parent + nettoyage code #9

🧹 NETTOYAGE CODE ÉTUDIANT:
- Suppression console.log/error (4 occurrences)
- Suppression code commenté inutile
- Suppression champs obsolètes (mobile, telephone_fixe)
- Correction password nullable dans Users entity

 NOUVELLES FONCTIONNALITÉS:
- Ajout champs token_creation_mdp dans Users entity
- Création RegisterParentDto (validation complète)
- Endpoint POST /auth/register/parent
- Méthode registerParent() avec transaction
- Gestion Parent 1 + Parent 2 (co-parent optionnel)
- Génération tokens UUID pour création MDP
- Lecture durée token depuis AppConfigService
- Création automatique entités Parents
- Statut EN_ATTENTE par défaut
- Intégration AppConfigModule dans AuthModule
- Amélioration méthode login() (vérif statut + password null)

📋 WORKFLOW CDC CONFORME:
- Inscription SANS mot de passe
- Token envoyé par email (TODO)
- Validation gestionnaire requise
- Support co-parent avec même adresse

Réf: docs/20_WORKFLOW-CREATION-COMPTE.md
Ticket: #9 (ou #16)
This commit is contained in:
2025-11-30 16:09:54 +01:00
parent 61b45cd830
commit 40c7f40d12
5 changed files with 313 additions and 30 deletions
+12 -1
View File
@@ -3,6 +3,7 @@ import { LoginDto } from './dto/login.dto';
import { AuthService } from './auth.service';
import { Public } from 'src/common/decorators/public.decorator';
import { RegisterDto } from './dto/register.dto';
import { RegisterParentDto } from './dto/register-parent.dto';
import { ApiBearerAuth, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
import { AuthGuard } from 'src/common/guards/auth.guard';
import type { Request } from 'express';
@@ -30,11 +31,21 @@ export class AuthController {
@Public()
@Post('register')
@ApiOperation({ summary: 'Inscription' })
@ApiOperation({ summary: 'Inscription (OBSOLÈTE - utiliser /register/parent)' })
@ApiResponse({ status: 409, description: 'Email déjà utilisé' })
async register(@Body() dto: RegisterDto) {
return this.authService.register(dto);
}
@Public()
@Post('register/parent')
@ApiOperation({ summary: 'Inscription Parent (étape 1/6)' })
@ApiResponse({ status: 201, description: 'Inscription réussie' })
@ApiResponse({ status: 409, description: 'Email déjà utilisé' })
async registerParent(@Body() dto: RegisterParentDto) {
return this.authService.registerParent(dto);
}
@Public()
@Post('refresh')
@ApiBearerAuth('refresh_token')