BCard - Documentation technique

AccountDeletionService
in package

Read onlyYes

Gère la suppression « RGPD » d'un compte utilisateur par anonymisation.

Le service orchestre, dans une transaction Doctrine unique, la trace d'audit, l'anonymisation de l'entité User, la suppression physique de ses cartes de visite et de ses contacts, puis l'anonymisation de ses commandes (conservées pour la comptabilité). Il notifie ensuite l'utilisateur et les administrateurs par e-mail via MailerService et invalide le token de sécurité courant afin de déconnecter la session. Utilisé depuis l'espace « Mon compte ».

Table of Contents

Properties

$auditLogger  : AuditLogger
$entityManager  : EntityManagerInterface
$logger  : LoggerInterface
$mailerService  : MailerService
$tokenStorage  : TokenStorageInterface
$userRepository  : UserRepository

Methods

__construct()  : mixed
deleteAccount()  : void
Supprime (anonymise) un compte utilisateur.
sendDeletionEmails()  : void
Notifie l'utilisateur supprimé et l'ensemble des administrateurs par e-mail.

Properties

Methods

__construct()

public __construct(EntityManagerInterface $entityManager, MailerService $mailerService, LoggerInterface $logger, TokenStorageInterface $tokenStorage, UserRepository $userRepository, AuditLogger $auditLogger) : mixed
Parameters
$entityManager : EntityManagerInterface

Gestion de la transaction, des suppressions et du flush.

$mailerService : MailerService

Envoi des e-mails de confirmation de suppression.

$logger : LoggerInterface

Journalisation des succès et des échecs de suppression.

$tokenStorage : TokenStorageInterface

Invalidation du token de sécurité (déconnexion immédiate).

$userRepository : UserRepository

Recherche des administrateurs à notifier.

$auditLogger : AuditLogger

Écriture de la trace d'audit avant anonymisation.

deleteAccount()

Supprime (anonymise) un compte utilisateur.

public deleteAccount(User $user) : void

Refuse d'emblée les comptes portant l'un des rôles protégés ROLE_ADMIN, ROLE_SUPPORT ou ROLE_OPERATOR. Mémorise l'e-mail et le nom d'origine, puis ouvre une transaction dans laquelle il : écrit une entrée d'audit AuditLog::ACTION_USER_DELETED contenant ces valeurs d'origine, appelle User::anonymize(), supprime toutes les cartes de visite de l'utilisateur (en détachant au préalable l'employé associé), supprime tous ses contacts, et remplace les données nominatives de chacune de ses commandes par des valeurs neutres (Inconnu, deleted@bcard.binn, note « Utilisateur supprimé »). Après le commit, envoie les e-mails de notification via AccountDeletionService::sendDeletionEmails() puis vide le token de sécurité, ce qui déconnecte l'utilisateur courant.

Effets de bord : transaction + flush en base, suppressions définitives, envoi d'e-mails, invalidation de la session de sécurité, écriture de logs.

En cas d'erreur, la transaction est annulée (si encore active), l'échec est journalisé en niveau error et l'exception est relancée telle quelle.

Parameters
$user : User

Utilisateur à anonymiser ; ses cartes, contacts et commandes sont traités en cascade.

Tags
throws
LogicException

Si le compte porte un rôle administratif protégé.

Exception

Toute erreur survenue pendant la transaction, relancée après rollback.

sendDeletionEmails()

Notifie l'utilisateur supprimé et l'ensemble des administrateurs par e-mail.

private sendDeletionEmails(string $userEmail, string $userName) : void

Envoie d'abord un e-mail de confirmation à l'ancienne adresse de l'utilisateur (template account_deleted_user), puis récupère via une requête DQL tous les comptes dont la colonne roles contient ROLE_ADMIN et leur envoie un e-mail d'information (template account_deleted_admin) mentionnant le nom et l'e-mail d'origine.

Les échecs sont volontairement absorbés : toute exception est journalisée en niveau warning et n'interrompt pas la suppression du compte déjà validée en base.

Parameters
$userEmail : string

Adresse e-mail d'origine, avant anonymisation.

$userName : string

Nom d'origine, avant anonymisation.


        
On this page

Search results