Tracabilité complète de la création des entitées / segmentation des données #3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Besoin
Il est nécessaire de mettre en place une tracabilité complète des actions. Notamment on veut savoir :
Qui a créé ou modifié les
Pour cela on va rajouter des champs dans certaines entitées et utiliser spring data pour valoriser ces champs via les annotations :
On va également créer une table audit_log pour tracer toutes les actions.
Pour cela on va introduire la notion d”Actor, qui peut se spécialiser en "User", "System" ou "ThirdPartyApp" pour savoir qui sont sont les acteurs qui font des créations modifications.
Voici les grands principes à retenir :
Implémentation
La structure Actor/user / Third Party app est la suivante :
user
Le user est une entitée qui doit a minima ressembler à ceci :
Ajouter repository / service / model / controller pour pouvoir afficher la liste des utilisateurs humains et créer.
Acteurs
Création d’entité Actor de ce type :
L’actor type :
Création d’un service ActorService qui permet de savoir quel est la personne connectée. Il s’agit soit d’un ThirdPartyApplication soit d’un utilisateur authentifié via Keycloak.
Audit Spring Data
Création de l’audit log
Utilise l’audit Spring Data (@CreatedBy, AuditorAware) pour injecter automatiquement l’acteur dans les entités.
Pour cela on peut créer ceci :
Audit log listener
Les entitées concernées sont :
Audit log
Créer un ecran "audit log" qui permet d'afficher dans une datable l'ensemble des creations et modifications effectuées