Skip to content

Refuse les emails sans TLD lors de l'achat de billets d'événement - #2426

Merged
Korbeil merged 3 commits into
afup:masterfrom
Korbeil:afup-when-a-customer-take
Oct 5, 2026
Merged

Korbeil merged 3 commits into
afup:masterfrom
Korbeil:afup-when-a-customer-take

Conversation

@Korbeil

@Korbeil Korbeil commented Oct 5, 2026

Copy link
Copy Markdown
Member

Description

Lors de l'achat de billets pour un événement, l'email du participant n'était pas validé côté serveur, ce qui permettait de saisir des emails sans extension de domaine (TLD). Ces emails invalides causaient des problèmes en aval. Désormais, un email valide avec un TLD est exigé.

Changes

  • L'email du participant est validé côté serveur (auparavant seul le navigateur le vérifiait, ce qui laisse passer les emails sans TLD)
  • La validation est appliquée aussi au niveau du formulaire pour éviter la saisie d'un email sans TLD
  • Ajout de tests unitaires sur la validation de l'email (valides avec TLD, refus sans TLD)

How to test

  1. Aller sur la billetterie d'un événement et saisir un email sans TLD (ex. jean@localhost) : le formulaire doit être refusé.
  2. Saisir un email valide (ex. jean@exemple.fr) : l'achat doit fonctionner.
  3. Lancer phpunit tests/unit/AppBundle/Event/Model/TicketTest.php.

- Use the PHPUnit DataProvider attribute instead of the removed
  doc-comment annotation so testEmailIsValidated() receives its
  arguments and all provider rows actually run.
- Add NotBlank next to Email on Ticket::email (and on the ticket
  form email field): Symfony's Email constraint skips empty values,
  so an empty email would otherwise stay valid.
@Korbeil
Korbeil marked this pull request as ready for review October 5, 2026 09:40
Comment thread tests/unit/AppBundle/Event/Model/TicketTest.php Outdated
Le formulaire d'achat pré-remplit la facture avec 15 billets vides
(PurchaseType::MAX_NB_PERSONNES) ; les entrées non soumises de la
collection sont validées et l'email vide violait NotBlank, ce qui
invalide chaque soumission du formulaire de billetterie.

La contrainte Email (mode html5 par défaut) refuse déjà les emails
sans TLD et ignore les valeurs vides : l'objectif du PR est conservé.

- TicketType / Ticket : retrait de NotBlank (et de son import)
- TicketTest : l'email vide est désormais attendu valide (l'Email
  ignore les valeurs vides, sur quoi s'appuient les billets vides)
- Ticketing.feature : scénario de régression sur le refus des emails
  sans TLD ("Cette valeur n'est pas une adresse email valide.")
@Korbeil
Korbeil force-pushed the afup-when-a-customer-take branch from 0e7dd5e to 32dee8e Compare October 5, 2026 13:55
@Korbeil
Korbeil marked this pull request as draft October 5, 2026 13:56
@Korbeil
Korbeil marked this pull request as ready for review October 5, 2026 14:20
@Korbeil
Korbeil merged commit ceabe1d into afup:master Oct 5, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants