EmailVerificationService
in package
Gère la vérification d'adresse e-mail par code à usage unique.
Génère un code numérique à six chiffres, le stocke sur l'entité User avec une date
d'expiration à 15 minutes, l'envoie par e-mail via le template
email/verification_code.html.twig, puis contrôle sa saisie pour marquer le compte comme
vérifié et activé. Utilisé à l'inscription et au début du tunnel d'inscription entreprise.
Table of Contents
Properties
- $entityManager : EntityManagerInterface
- $mailer : MailerInterface
- $mailerService : MailerService
Methods
- __construct() : mixed
- canResendCode() : bool
- Vérifie si un code peut être renvoyé (éviter le spam)
- generateVerificationCode() : string
- Génère un code de vérification à 6 chiffres
- sendVerificationCode() : void
- Envoie un code de vérification par email
- verifyCode() : bool
- Vérifie un code de vérification
Properties
$entityManager
private
EntityManagerInterface
$entityManager
$mailer
private
MailerInterface
$mailer
$mailerService
private
MailerService
$mailerService
Methods
__construct()
public
__construct(EntityManagerInterface $entityManager, MailerInterface $mailer, MailerService $mailerService) : mixed
Parameters
- $entityManager : EntityManagerInterface
-
Persistance du code de vérification et du statut du compte.
- $mailer : MailerInterface
-
Transport d'envoi de l'e-mail contenant le code.
- $mailerService : MailerService
-
Fournit l'adresse et le nom d'expéditeur configurés.
canResendCode()
Vérifie si un code peut être renvoyé (éviter le spam)
public
canResendCode(User $user) : bool
Autorise le renvoi immédiat si aucune date d'expiration n'est enregistrée. Sinon, la date d'envoi du dernier code est reconstituée en retranchant 15 minutes à la date d'expiration, et le renvoi n'est permis qu'au-delà de 2 minutes après cet instant. Lecture seule, sans effet de bord.
Parameters
- $user : User
-
Utilisateur demandant un nouvel envoi.
Return values
bool —true si un nouveau code peut être envoyé.
generateVerificationCode()
Génère un code de vérification à 6 chiffres
public
generateVerificationCode() : string
Tire un entier aléatoire sécurisé entre 100000 et 999999 ; le complément par str_pad() est
donc sans effet, la borne basse garantissant déjà six chiffres. Aucun effet de bord : le code
n'est ni stocké ni envoyé par cette méthode.
Tags
Return values
string —Code numérique de six chiffres.
sendVerificationCode()
Envoie un code de vérification par email
public
sendVerificationCode(User $user) : void
Génère un nouveau code via EmailVerificationService::generateVerificationCode(),
fixe son expiration à 15 minutes, l'enregistre sur l'utilisateur (persist() + flush()),
puis envoie un TemplatedEmail bâti sur email/verification_code.html.twig avec pour
contexte l'utilisateur, le code et la date d'expiration. Tout code précédemment émis est
écrasé et devient inutilisable.
Effets de bord : écriture en base et envoi d'e-mail. L'e-mail étant envoyé après le flush, un échec de transport laisse le code enregistré en base.
Parameters
- $user : User
-
Utilisateur destinataire ; son adresse e-mail doit être renseignée.
Tags
verifyCode()
Vérifie un code de vérification
public
verifyCode(User $user, string $code) : bool
Rejette la saisie si User::isVerificationCodeValid() renvoie faux (code absent ou expiré) ou
si le code fourni diffère de celui stocké — la comparaison est stricte et sensible à la casse.
En cas de succès, le compte est marqué vérifié et activé, et le code ainsi que sa date
d'expiration sont effacés pour interdire toute réutilisation, avant persist() + flush().
Effet de bord : écriture en base uniquement lorsque le code est valide.
Parameters
- $user : User
-
Utilisateur dont on vérifie le code.
- $code : string
-
Code saisi par l'utilisateur.
Return values
bool —true si le code est valide et le compte activé, false sinon (aucune écriture).