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