Accueil / Développement / Audit des entités sur Symfony2

Audit des entités sur Symfony2

symfony_logo

Pour un de mes projets sur Symfony 2, j’avais besoin de faire un audit des Entités, c’est à dire faire un historique des actions faites sur une entité (Qui a fait Quoi, Quand et Comment // QQQC). Pour cela j’ai trouvé un bundle crée par SimpleThings : EntityAudit.

Introduction

Il y a plusieurs approches pour faire un audit. Pour SimpleThings, il crée une table miroir de chaque table entité vérifié suivi d’un suffixe « _audit ». En plus des champs contrôlés, il rajoute 2 champs supplémentaires : rev et revtype.

Champ Description
rev Ce champ contient le numéro de révision globale générée automatiquement par la table révisions (id).
revtype Ce champ contiendra une des trois valeurs : INS, UPD, DEL.Cela signifie le comportement de l’action si c’est un ajout (INS), si c’est une mise à jour (UPD) ou une suppression (DEL) des données d’une entité.

En plus de ces tables mirroirs, vous aurez une table revisions. Cette table est un journal de toutes les révisions faites sur les entités vérifiées avec des champs tels que : l’id, le timestamp et le nom de l’utilisateur.

ce bundle vous permet également de générer automatiquement les requêtes suite à votre modification dans un ou plusieurs entités via Doctrine en ligne de commande. ça c’est top ! 🙂

Installation 

=> Via Composer

A la suite de vos bundles dans require, ajoutez cette ligne (n’oubliez pas la virgule à la fin de la précédente ligne)

Lancez le téléchargement avec Composer en ligne de commande avec :
Ensuite ajoutez le bundle dans l’AppKernel.php
Puis vous ajoutez l’extension dans le fichier config.yml :

A la suite de audited_entities, vous ajoutez vos entités que vous souhaitez faire un audit. (Note: mettez bien le slash entre le namespace et les répertoires des bundles.)

Et enfin vous lancez cette commande pour générer les tables audit + revisions :

Utilisation

Pour pouvoir consulter les révisions générés automatiquement suite à vos actions pour un élément d’une entité, il suffit de créer une fonction controller :

Et consulter une révision spécifiquement d’un élement d’une entité :

Libre à vous d’adapter la vue associée. Vous pouvez vous inspirer des vues dans le vendor de simplethings-Entity-Audit-bundle  😎

Vous pouvez également faire des comparaisons entre deux révisions pour une entité. Suffit de surcharger les méthodes de AuditController.php et d’adapter à votre vue !

Remarque: Ce bundle est capable de faire un audit des relations OneToOne et ManyToOne. Mais pas encore pour ManyToMany.

A vos claviers !

[Source]

A propos de Cyrille

Cyrille
Passionné depuis quelques années de nouvelles technologies et particulièrement de tout ce qui concerne la création et la gestion de sites Web (HTML, CSS, PHP, SQL). Depuis début 2013, je me spécialise dans un framework : Symfony 2. J'en profite pour partager mon expérience avec vous par le biais de la communauté ProGeek.

Voir aussi

WordPress – Erreur de permissions pour mise à jour

Lors de la mise à jour de WordPress depuis le tableau de bord, il est …

  • diabgate

    merci beaucoup ce bundle repond exactement à mes attentes