BCard - Documentation technique

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

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
throws
RandomException

Si la source d'aléa du système est indisponible.

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
throws
TransportExceptionInterface

Si le transport de messagerie ne parvient pas à remettre l'e-mail.

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).


        
On this page

Search results