fix: gérer l'erreur email dupliqué à la création de compte

Affiche un message utilisateur au lieu d'une exception SQL quand
l'email existe déjà. Déplace l'envoi du mail après le flush.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-19 10:19:04 +01:00
parent 5f86f677b1
commit 92b0839899

View File

@@ -966,6 +966,14 @@ class ReserverController extends AbstractController
$customer->setPassword($hashedPassword); $customer->setPassword($hashedPassword);
$customer->setRoles(['ROLE_USER']); $customer->setRoles(['ROLE_USER']);
try {
$em->persist($customer);
$em->flush();
} catch (\Doctrine\DBAL\Exception\UniqueConstraintViolationException $e) {
$this->addFlash('error', 'Un compte avec cette adresse email existe déjà. Veuillez vous connecter ou utiliser une autre adresse email.');
return $this->redirectToRoute('reservation_register');
}
$mailer->send( $mailer->send(
$customer->getEmail(), $customer->getEmail(),
$customer->getName() . " " . $customer->getSurname(), $customer->getName() . " " . $customer->getSurname(),
@@ -974,9 +982,6 @@ class ReserverController extends AbstractController
['customer' => $customer] ['customer' => $customer]
); );
$em->persist($customer);
$em->flush();
$this->addFlash('success', 'Votre compte a été créé avec succès ! Connectez-vous.'); $this->addFlash('success', 'Votre compte a été créé avec succès ! Connectez-vous.');
return $this->redirectToRoute('reservation_login'); return $this->redirectToRoute('reservation_login');
} }