# Endpoint - Renvoi d'Email de Vérification ## 📧 Endpoint **POST** `/api/public/registrations/resend-verification` Renvoie l'email de vérification pour une inscription publique non vérifiée. ## 🔐 Sécurité - **Rate limiting** : Configuré via `REGISTRATION_PUBLIC_RATE_LIMIT` (défaut: 20 req/min) - **Feature flag** : Retourne 404 si `REGISTRATION_PUBLIC_ENABLED=false` - **Vérification email requise** : Retourne 400 si `REGISTRATION_PUBLIC_REQUIRE_EMAIL_VERIFICATION=false` ## 📝 Payload **Body (JSON)** : ```json { "registration_id": 1 } ``` **OU** ```json { "email": "user@example.com" } ``` **Au moins un des deux champs est requis.** ## ✅ Réponse Succès (200) ```json { "message": "Email de vérification renvoyé avec succès.", "data": { "registration_id": 1, "email": "user@example.com" } } ``` ## ❌ Réponses d'Erreur ### 400 - Vérification email désactivée ```json { "message": "La vérification email n'est pas activée." } ``` ### 404 - Feature flag désactivé ```json { "message": "Public registration is not enabled." } ``` ### 422 - Validation Error ```json { "message": "Erreur lors du renvoi de l'email.", "errors": { "registration": ["Aucune inscription non vérifiée trouvée."] } } ``` **OU** ```json { "message": "Vous devez fournir soit un registration_id soit un email.", "errors": { "registration_id": ["Au moins un des champs registration_id ou email est requis."], "email": ["Au moins un des champs registration_id ou email est requis."] } } ``` ### 500 - Erreur serveur ```json { "message": "Impossible d'envoyer l'email de vérification. Veuillez réessayer plus tard." } ``` ## 🔄 Comportement 1. **Recherche de l'inscription** : - Si `registration_id` fourni → recherche par ID - Si `email` fourni → recherche la dernière inscription non vérifiée avec cet email 2. **Vérifications** : - L'inscription existe - L'inscription est en statut `DRAFT` (non vérifiée) 3. **Génération du token** : - Les tokens existants non utilisés sont invalidés - Un nouveau token est généré - Le token expire selon `REGISTRATION_VERIFICATION_TOKEN_EXPIRES_DAYS` 4. **Envoi de l'email** : - Email envoyé avec le nouveau lien de vérification - Log de l'action ## 📝 Exemples ### Avec registration_id ```bash curl -X POST http://localhost:8000/api/public/registrations/resend-verification \ -H "Content-Type: application/json" \ -d '{"registration_id": 1}' ``` ### Avec email ```bash curl -X POST http://localhost:8000/api/public/registrations/resend-verification \ -H "Content-Type: application/json" \ -d '{"email": "user@example.com"}' ``` ## 🎯 Cas d'usage 1. **Utilisateur n'a pas reçu l'email** : Peut demander un renvoi 2. **Email dans les spams** : Peut demander un renvoi 3. **Token expiré** : Peut demander un nouveau token ## 🔐 Sécurité - **Rate limiting** : Limite les abus (20 req/min par défaut) - **Validation stricte** : Vérifie que l'inscription existe et n'est pas déjà vérifiée - **Nouveau token** : Génère toujours un nouveau token (invalide les anciens) - **Logging** : Toutes les actions sont loggées avec correlation ID --- **Document créé le** : 2026-01-XX