[TECH] Mise en place de l'EDA sur l'anonymisation - #17387
Conversation
|
Choisir les applications à déployer :
Important N'oubliez pas de déployer l'API pour pouvoir accéder aux fronts et/ou à l’API MaDDo. |
dce79db to
f123324
Compare
f123324 to
9bca5a1
Compare
160bf15 to
4b83c23
Compare
4b83c23 to
66506a1
Compare
9bca5a1 to
ac91409
Compare
66506a1 to
a26ebac
Compare
a26ebac to
7517782
Compare
a0dfa33 to
d192b4d
Compare
d192b4d to
d31ea98
Compare
EmmanuelleBonnemay
left a comment
There was a problem hiding this comment.
Lu et testé avec succès
|
La description de la PR n’indique pas dans la proposition le comportement souhaité en cas d’erreur de l’anonymisation dans un des contextes. De même dans la description des tests fonctionnels il n’y a la description d’un cas d’erreur. Serait-il possible d’ajouter ces 2 points dans la description de la PR SVP ? 🙏 |
|
Actuellement sur le déploiement d’une RA pour Pix App n’est pas coché, est-ce volontaire ? Pourtant l’auto-anonymisation depuis le compte d’utilisateur sur Pix App avec envoi d’email est un cas pertinent à tester. |
|
🧪 J’ai effectué les tests fonctionnels indiqués dans la PR et des tests fonctionnels en cherchant à générer des erreurs. Tout me semble très bon, avec une toute petite remarque sur le cas suivant :
Néanmoins c’est mieux que ce qui se passe sur |
af9a7b8 to
6522be9
Compare
6522be9 to
7c830c7
Compare
Co-Authored-By: Yannick François <42057+yaf@users.noreply.github.com> Co-Authored-By: Cécilia Bossard <3694254+cbossard@users.noreply.github.com> Co-Authored-By: Guillaume Olejniczak <6728051+La-toile-cosmique@users.noreply.github.com> Co-Authored-By: Gilles Vieira <22393206+sandalfon@users.noreply.github.com> Co-Authored-By: Alice <44300937+alicepeltier@users.noreply.github.com> Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Yannick François <42057+yaf@users.noreply.github.com> Co-Authored-By: Cécilia Bossard <3694254+cbossard@users.noreply.github.com> Co-Authored-By: Guillaume Olejniczak <6728051+La-toile-cosmique@users.noreply.github.com> Co-Authored-By: Gilles Vieira <22393206+sandalfon@users.noreply.github.com> Co-Authored-By: Alice <44300937+alicepeltier@users.noreply.github.com> Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Yannick François <42057+yaf@users.noreply.github.com> Co-Authored-By: Cécilia Bossard <3694254+cbossard@users.noreply.github.com> Co-Authored-By: Guillaume Olejniczak <6728051+La-toile-cosmique@users.noreply.github.com> Co-Authored-By: Gilles Vieira <22393206+sandalfon@users.noreply.github.com> Co-Authored-By: Alice <44300937+alicepeltier@users.noreply.github.com> Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Yannick François <42057+yaf@users.noreply.github.com> Co-Authored-By: Cécilia Bossard <3694254+cbossard@users.noreply.github.com> Co-Authored-By: Guillaume Olejniczak <6728051+La-toile-cosmique@users.noreply.github.com> Co-Authored-By: Gilles Vieira <22393206+sandalfon@users.noreply.github.com> Co-Authored-By: Alice <44300937+alicepeltier@users.noreply.github.com> Co-Authored-By: Claude <noreply@anthropic.com>
7c830c7 to
4f4f981
Compare
Co-Authored-By: Yannick François <42057+yaf@users.noreply.github.com> Co-Authored-By: Cécilia Bossard <3694254+cbossard@users.noreply.github.com> Co-Authored-By: Guillaume Olejniczak <6728051+La-toile-cosmique@users.noreply.github.com> Co-Authored-By: Gilles Vieira <22393206+sandalfon@users.noreply.github.com> Co-Authored-By: Alice <44300937+alicepeltier@users.noreply.github.com> Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Yannick François <42057+yaf@users.noreply.github.com> Co-Authored-By: Cécilia Bossard <3694254+cbossard@users.noreply.github.com> Co-Authored-By: Guillaume Olejniczak <6728051+La-toile-cosmique@users.noreply.github.com> Co-Authored-By: Gilles Vieira <22393206+sandalfon@users.noreply.github.com> Co-Authored-By: Alice <44300937+alicepeltier@users.noreply.github.com> Co-Authored-By: Claude <noreply@anthropic.com>
4f4f981 to
ef1f8ea
Compare
☀️ Problème
L'anonymisation d'un utilisateur (admin via
POST /api/admin/users/{id}/anonymize, ou l'utilisateur lui-même viaDELETE /api/users/me) est aujourd'hui portée par un unique service,anonymize-user.service.js(contexteprivacy), qui appelle directement les repositories/API de 4 autres contextes (identity-access-management,team,legal-documents,prescription/learner-management).Ce couplage rend le service difficile à faire évoluer et empêche d'isoler l'échec d'un traitement sans bloquer toute la chaîne.
⛱️ Proposition
Bascule de l'anonymisation vers l'architecture événementielle mise en place dans #17159 : publication d'un
AnonymizeUserEvent, auquel chaque bounded context réagit via son propreEventHandler, de façon autonome et découplée :identity-access-management: moyens de connexion, dernières connexions, login, révocation des tokens, demande de réinitialisation de mot de passelegal-documents: documents légaux acceptésprescription/learner-management: apprenants et participations aux campagnesteam: memberships et certification-center-membershipsAnonymizeUserEventest un integration event consommé par plusieurs bounded contexts : il est donc déclaré dansshared/domain/events/(et non dansprivacy), pour queprivacyreste le seul producteur sans devenir une dépendance des contextes consommateurs. La règledependency-cruiserqui exemptait spécifiquement les évènements de domaine des vérifications de dépendances inter-contextes n'est donc plus nécessaire et a été retirée :sharedétant déjà une dépendance autorisée pour tous les contextes, aucune exception particulière n'est requise.L'ancien
anonymize-user.service.jsest supprimé.🧴 Remarques
anonymize-uservérifie que chaqueEventHandlerreçoit le payload attendu.🏊 Pour tester
superadmin@example.net/pix123) : sur la fiche d'un utilisateur, déclencher l'anonymisation, puis vérifier en base que l'utilisateur, ses memberships, ses moyens de connexion, ses participations et ses documents légaux sont bien anonymisés/désactivés.certif-success@example.net/pix123) :DELETE /api/users/me, même vérification.Penser à démarrer le traitement des jobs en local !
cd api && npm run start:job