BCard - Documentation technique

EmployeeUserCreationService
in package

Read onlyYes

Crée et active les comptes utilisateurs des employés d'une entreprise cliente.

À partir d'une entité Employee, le service provisionne un User au rôle ROLE_EMPLOYEE rattaché à l'entreprise, lui attribue un mot de passe temporaire à changer à la première connexion et un code d'activation valable 24 heures, trace l'opération via AuditLogger puis envoie l'e-mail d'activation par MailerService. Il expose également la validation du code d'activation renvoyé par l'employé.

Table of Contents

Properties

$auditLogger  : AuditLogger
$entityManager  : EntityManagerInterface
$logger  : LoggerInterface
$mailerService  : MailerService
$passwordHasher  : UserPasswordHasherInterface
$urlGenerator  : UrlGeneratorInterface

Methods

__construct()  : mixed
activateEmployeeAccount()  : bool
Active le compte d'un employé avec le code de vérification
createUserAccountForEmployee()  : User|null
Crée un compte utilisateur pour un employé et envoie l'email d'activation
isEmailAlreadyUsed()  : bool
Vérifie si un email est déjà utilisé par un autre utilisateur
generateTemporaryPassword()  : string
Génère un mot de passe temporaire sécurisé
generateVerificationCode()  : string
Génère un code de vérification à 6 chiffres
sendActivationEmail()  : bool
Envoie l'email d'activation à l'employé

Properties

Methods

__construct()

public __construct(EntityManagerInterface $entityManager, UserPasswordHasherInterface $passwordHasher, UrlGeneratorInterface $urlGenerator, LoggerInterface $logger, MailerService $mailerService, AuditLogger $auditLogger) : mixed
Parameters
$entityManager : EntityManagerInterface

Recherche, persistance et flush des comptes utilisateurs.

$passwordHasher : UserPasswordHasherInterface

Hachage du mot de passe temporaire.

$urlGenerator : UrlGeneratorInterface

Génération de l'URL absolue d'activation.

$logger : LoggerInterface

Journalisation des créations, activations et erreurs.

$mailerService : MailerService

Envoi de l'e-mail d'activation.

$auditLogger : AuditLogger

Traçabilité de la création et de l'activation du compte.

activateEmployeeAccount()

Active le compte d'un employé avec le code de vérification

public activateEmployeeAccount(string $email, string $verificationCode) : bool

Recherche l'utilisateur par le couple e-mail + code de vérification : si aucun ne correspond, ou si la date d'expiration du code est déjà dépassée, la méthode retourne false sans rien modifier. Sinon le compte est marqué vérifié et activé, le code et son expiration sont effacés pour empêcher toute réutilisation, les modifications sont flushées, une entrée d'audit AuditLog::ACTION_USER_ACTIVATED est écrite et le succès est journalisé.

Effets de bord : écriture en base, écriture d'audit, journalisation. Toute exception est capturée et journalisée en error sans être propagée.

Parameters
$email : string

Adresse e-mail du compte à activer.

$verificationCode : string

Code d'activation reçu par e-mail.

Return values
bool

true si le compte a été activé, false si le couple est inconnu, si le code a expiré ou si une exception est survenue.

createUserAccountForEmployee()

Crée un compte utilisateur pour un employé et envoie l'email d'activation

public createUserAccountForEmployee(Employee $employee) : User|null

Refuse la création (retour null avec avertissement journalisé) si l'employé n'a pas d'adresse e-mail ou si un utilisateur porte déjà cette adresse. Sinon, instancie un User reprenant l'e-mail, le nom complet, le téléphone, le poste et l'entreprise de l'employé, avec le rôle unique ROLE_EMPLOYEE, non activé, non vérifié et avec mustChangePassword à true. Un mot de passe temporaire de 12 caractères est généré puis haché, et un code de vérification à six chiffres est stocké avec une expiration à 24 heures. Le compte est persisté et flushé, une entrée d'audit AuditLog::ACTION_USER_CREATED est écrite, puis l'e-mail d'activation est envoyé via EmployeeUserCreationService::sendActivationEmail(). Un échec d'envoi est seulement journalisé : le compte reste créé et est tout de même retourné.

Effets de bord : écriture en base, écriture d'audit, envoi d'e-mail, journalisation. Aucune transaction explicite n'encadre l'opération.

Toutes les exceptions sont capturées et journalisées en error ; la méthode n'en propage aucune.

Parameters
$employee : Employee

Employé pour lequel provisionner un compte.

Return values
User|null

Compte créé, ou null si l'e-mail est manquant, déjà utilisé, ou si une exception est survenue.

isEmailAlreadyUsed()

Vérifie si un email est déjà utilisé par un autre utilisateur

public isEmailAlreadyUsed(string $email) : bool

Effectue une recherche exacte sur le champ email du dépôt User. Lecture seule, sans effet de bord.

Parameters
$email : string

Adresse e-mail à tester.

Return values
bool

true si un compte porte déjà cette adresse.

generateTemporaryPassword()

Génère un mot de passe temporaire sécurisé

private generateTemporaryPassword() : string

Tire 12 caractères via random_int() dans un alphabet mêlant minuscules, majuscules, chiffres et symboles !@#$%^&*. Aucune contrainte de composition n'est appliquée. Sans effet de bord.

Tags
throws
RandomException

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

Return values
string

Mot de passe temporaire en clair, de 12 caractères.

generateVerificationCode()

Génère un code de vérification à 6 chiffres

private generateVerificationCode() : string

Tire un entier entre 0 et 999999 puis le complète à gauche par des zéros sur six positions (contrairement à EmailVerificationService::generateVerificationCode(), la borne basse est ici zéro, d'où l'utilité du remplissage). Sans effet de bord.

Tags
throws
RandomException

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

Return values
string

Code numérique de six chiffres, éventuellement préfixé de zéros.

sendActivationEmail()

Envoie l'email d'activation à l'employé

private sendActivationEmail(Employee $employee, User $user, string $temporaryPassword, string $verificationCode) : bool

Construit une URL absolue vers la route employee_account_activation paramétrée par le code de vérification et l'adresse e-mail, puis envoie le template employee_activation avec l'employé, son entreprise, le mot de passe temporaire en clair, l'URL d'activation et le code. Le mot de passe temporaire transite donc par e-mail, d'où l'obligation de changement à la première connexion.

Effets de bord : envoi d'e-mail et journalisation. Toute erreur, y compris de transport, est capturée et journalisée en error sans être propagée.

Parameters
$employee : Employee

Employé destinataire, transmis au template.

$user : User

Compte créé, fournissant l'adresse e-mail et l'entreprise.

$temporaryPassword : string

Mot de passe temporaire en clair inclus dans l'e-mail.

$verificationCode : string

Code d'activation à six chiffres.

Return values
bool

true si l'e-mail a été remis au transport, false en cas d'erreur.


        
On this page

Search results