Droit à l'effacement des données personnelles
Maquette non fonctionnelle — surface backoffice Angular uniquement, aucun écran mobile ni terrain n'est concerné. Deux livrables : la modale de confirmation exigée par le critère d'acceptation n°2 (« la liste des données qui seront effacées ») et le badge « Effacé » dans la colonne Statut. Habillage repris de users-disable-confirm et de users-list.
Le geste le plus destructeur du backoffice. Le ton est ferme sans être alarmiste : ni majuscules, ni fond rouge plein, ni double alerte. La gravité passe par trois frictions délibérées — la liste exhaustive de ce qui part et de ce qui reste, la saisie de l'adresse e-mail exacte, la référence de la demande — puis par un unique accent rouge sur le bouton d'action. Un écran qui hurle se clique en réflexe ; un écran qui fait lire se clique en conscience.
1 · Liste utilisateurs — badge « Effacé » et ligne anonymisée
Le badge « Effacé » s'ajoute dans la colonne Statut sur le modèle du badge « Verrouillé » de l'US-045 : il ne remplace pas le statut, il le complète. La ligne d'un compte effacé n'appelle aucun style particulier — les valeurs anonymisées (« Utilisateur supprimé », initiales « US », e-mail efface-<id>@rgpd.invalid) parlent d'elles-mêmes. Seules les actions disparaissent.
A1 Page Utilisateurs & Rôles — un compte effacé parmi les autres
JM
Josiane Marival
Administration
🤝 Partenaires
👥 Utilisateurs
⚙️ Paramètres
🛡️ Journal d'audit
Utilisateurs & Rôles
14 membres de l'association
RôleTous
StatutTous
MembreRôleEmailStatutCompte créé
JM
Josiane Marival
Administrateur
Actif
4 janv. 2025
KM
Kevin Monrose
Collecteur
Actif
18 févr. 2025
LF
Léa Fontaine
Dispatcheur
DésactivéVerrouillé
2 sept. 2025
US
Utilisateur supprimé
Aucun rôle
Désactivé🧹 Effacé
11 mars 2025
TB
Théo Bacri
Collecteur
En attente
28 juil. 2026
Ligne 2 — le bouton d'effacement (🗑️) est montré au survol : il se remplit en aplat pour se distinguer de « Désactiver », son voisin immédiat, qui reste en contour. Il n'apparaît que pour un administrateur connecté, et seulement sur un compte non encore effacé. Ligne 4 — le compte effacé : statut « Désactivé » plus « Effacé », aucune action, avatar en gris neutre (aucun rôle). Ce rendu s'obtient sans code d'affichage particulier.
A2 Colonne Statut — les combinaisons de badges
CasColonne StatutLecture
Compte actifActifExistant, inchangé
Invitation en attenteEn attenteExistant, inchangé
DésactivéDésactivéRéversible — le compte peut être réactivé
Verrouillé (US-045)
ActifVerrouillé
Transitoire — teinte douce, se déverrouille
Effacé (US-034)
Désactivé🧹 Effacé
Terminal — aplat, ne se défait jamais
Parti pris chromatique. « Verrouillé » et « Effacé » partagent la même famille rouge mais s'opposent par le remplissage : teinte douce = état transitoire, aplat = état terminal. La distinction reste immédiate même côte à côte, et le rouge demeure cohérent avec l'action Effacement RGPD déjà affichée en rouge au journal d'audit (US-040). Le pictogramme 🧹 est celui du registre d'audit, repris tel quel.
A3 Retour de l'opération
Les données personnelles de Kevin Monrose ont été effacées.
Une erreur est survenue. L'effacement n'a pas été réalisé.
Toasts existants du composant users-list, aucune variante nouvelle. Le toast de succès nomme la personne une dernière fois : c'est le seul endroit de l'application où son nom réapparaît après l'opération, et il s'efface au bout de quelques secondes. La liste rechargée affiche « Utilisateur supprimé ». Deux canaux, jamais les deux à la fois : les refus métier (409) s'affichent dans la modale — états C1 à C3 — et n'utilisent pas le toast ; le toast rouge est réservé aux erreurs techniques (réseau, 500), la modale revenant alors à l'état B4 pour permettre une nouvelle tentative.
2 · Modale de confirmation — parcours nominal
Habillage users-disable-confirm : même fond, même arrondi de 14 px, même ombre, même paire de boutons, même spinner. Deux écarts assumés, imposés par le contenu : la largeur passe de 420 à 500 px et le corps est aligné à gauche — trois listes de données centrées seraient illisibles. L'icône, le titre et la carte d'identité restent centrés, de sorte que la parenté visuelle avec la modale de désactivation demeure évidente.
B1 Ouverture — champs vides, bouton inerte
À l'ouverture, aucun champ n'est pré-rempli et le bouton d'action est inerte dès la première seconde : impossible de valider par réflexe. L'adresse à recopier est affichée en clair — la friction recherchée est la délibération, pas le secret.
B2 Adresse incorrecte — bouton toujours inerte
Un caractère manquant suffit : l'égalité doit être stricte. Le message est factuel, sans reproche, et n'apparaît qu'après une première saisie — pas dès la première frappe. La référence, elle, est bien remplie : elle ne débloque rien à elle seule.
B3 Adresse correcte, référence vide — bouton encore inerte
État charnière : l'adresse est validée, le bouton reste pourtant éteint. C'est ce qui rend le caractère obligatoire de la référence lisible sans message d'erreur. Si le PO tranche « facultatif », seuls l'astérisque, ce message et la condition d'armement disparaissent — l'état B3 devient alors identique à B4.
B4 Tout est saisi — bouton armé
Le bouton s'arme : opacité pleine et légère ombre portée rouge. Aucun changement de libellé, aucune animation d'appel — l'écran ne pousse pas au clic, il le rend possible. « Annuler » reste à gauche, en contour neutre, et conserve exactement le poids visuel qu'il avait à l'ouverture.
B5 Envoi en cours
Spinner et libellé au participe présent, exactement comme users-disable-confirm. Les deux champs sont grisés et « Annuler » est neutralisé : l'opération est transactionnelle côté serveur, on n'offre pas un bouton d'annulation qui n'annulerait rien. La fermeture par la touche Échap et par le clic sur le fond est suspendue pendant ce temps.
3 · Refus du serveur (HTTP 409)
Trois refus possibles, tous en 409. Le bandeau se place juste au-dessus des boutons — dernier élément lu avant l'action — et reprend l'habillage de la note de rejet du journal d'audit (US-040). Les blocs de données et les champs de saisie disparaissent dans ces états : quand l'opération est refusée, la liste des données n'a plus d'utilité, seule compte la raison du refus.
C1 409 — compte déjà effacé
Cas de rejeu — deux administrateurs traitant la même demande, ou un onglet resté ouvert. Le bouton d'action disparaît au lieu de rester grisé : il n'y a pas de seconde tentative possible. On renvoie vers le journal d'audit, qui porte la preuve du traitement.
C2 409 — auto-effacement interdit
Le bouton d'effacement n'est pas proposé sur sa propre ligne : ce refus n'est atteignable que par un onglet obsolète ou un appel direct. Le message explique le pourquoi — l'auteur de l'acte doit pouvoir en répondre — et donne la marche à suivre, sans culpabiliser.
C3 409 — dernier administrateur
Seul refus qui laisse une issue : le raccourci « Gérer les rôles » ouvre la modale d'édition du compte, où un autre administrateur peut être nommé. Le message reprend au mot près celui du garde-fou existant sur le changement de rôles — un administrateur ne doit pas découvrir deux formulations pour une même règle.
Refus non maquetté : le 403. Un utilisateur non administrateur ne voit jamais le bouton d'effacement ; s'il forçait l'appel, le serveur répondrait 403 avant même d'atteindre ce composant — et, comme le relève l'étude technique, sans laisser de trace au journal d'audit. Aucun écran de backoffice ne peut couvrir ce cas.
4 · Règles de gestion pour l'intégration
Ce que la maquette engage, à destination du développement backoffice.
RègleÉnoncé
RG-01Le bouton d'effacement n'est rendu que si l'utilisateur connecté est administrateur et que le compte cible n'est pas déjà effacé.
RG-02Le bouton d'action de la modale n'est armé que si les deux conditions sont réunies : adresse e-mail strictement égale à celle du compte, et référence de la demande d'au moins 3 caractères.
RG-03Comparaison de l'adresse : égalité stricte après suppression des espaces de début et de fin uniquement. Aucune normalisation de casse, aucun autre nettoyage — la saisie doit être fidèle.
RG-04Le message d'erreur du champ e-mail n'apparaît qu'après perte du focus ou première tentative de validation, jamais dès la première frappe.
RG-05Pendant l'envoi : les deux champs sont désactivés, « Annuler » est neutralisé, la fermeture par Échap et par clic sur le fond est suspendue.
RG-06Sur un refus 409, le titre devient « Effacement impossible », les trois blocs de données et les champs de saisie sont retirés ; ne subsistent que l'identité de la cible, le motif du refus et la sortie.
RG-06bUn refus 409 s'affiche dans la modale et jamais en toast. Le toast rouge est réservé aux erreurs techniques (réseau, 500) : la modale revient alors à l'état armé, une nouvelle tentative reste possible.
RG-07Le badge « Effacé » s'ajoute au badge de statut, il ne le remplace pas — comme le badge « Verrouillé » de l'US-045. Il porte la date d'effacement en infobulle.
RG-08Sur un compte effacé, toutes les actions sont masquées (Éditer, Réactiver, Renvoyer l'invitation, Déverrouiller, Désactiver, Effacer). La cellule affiche un tiret discret avec infobulle.
RG-09La ligne d'un compte effacé ne reçoit aucun style particulier : ni grisé, ni italique, ni barré. Les valeurs anonymisées suffisent.
RG-10Le corps de la modale défile au-delà de 88vh (écrans courts, zoom 125 %) ; l'icône, le titre et la barre de boutons restent visibles.
RG-11À l'ouverture, le focus se place sur le champ e-mail. Ordre de tabulation : e-mail → référence → Annuler → Effacer.
RG-12Le pictogramme 🧹 et la famille rouge sont ceux de l'action Effacement RGPD au journal d'audit (US-040) : mêmes signes d'un écran à l'autre.
RG-13Arbitrage PO en suspens — la référence de la demande est maquettée obligatoire. Si elle devenait facultative : retirer l'astérisque, le message d'aide sous le champ et la condition d'armement de la RG-02. Rien d'autre ne bouge.
Ce que la maquette ne traite pas. Aucun écran de « registre des effacements » — le journal d'audit filtré sur l'action Effacement RGPD le fournit déjà. Aucune notification à la personne effacée : la réponse à sa demande se fait hors application. Aucun écran mobile ni terrain — sur ces surfaces, « Utilisateur supprimé » s'affiche sans qu'une seule ligne de code ne change.