Developed with love by KnpLabs Hire us for your project!
127

DataDogAuditBundle

by DATA-DOG

Stores all database changes for doctrine ORM

Audit bundle

This bundle creates an audit log for all doctrine ORM database related changes:

  • inserts and updates including their diffs and relation field diffs.
  • many to many relation changes, association and dissociation actions.
  • if there is an user in token storage, it will link him to the log.
  • the audit entries are inserted within the same transaction during flush, if something fails the state remains clean.

Basically you can track any change from these log entries if they were
managed through standard ORM operations.

NOTE: audit cannot track DQL or direct SQL updates or delete statement executions.

Install

First, install it with composer:

composer require data-dog/audit-bundle

Then, add it in your AppKernel bundles.

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        ...
        new DataDog\AuditBundle\DataDogAuditBundle(),
        ...
    );
    ...
}

Finally, create the database tables used by the bundle:

Using Doctrine Migrations Bundle:

php app/console doctrine:migrations:diff
php app/console doctrine:migrations:migrate

Using Doctrine Schema:

php app/console doctrine:schema:update --force

Demo

The best way to see features is to see the actual demo. Just clone the bundle
and run:

make

Visit http://localhost:8000/audit to see the log actions.

The demo application source is available in example directory and it is a basic
symfony application.

Usage

audit entities will be mapped automatically if you run schema update or similar.
And all the database changes will be reflected in the audit log afterwards.

Unaudited Entities

Sometimes, you might not want to create audit log entries for particular entities.
You can achieve this by listing those entities under the unaudited_entities configuration
key in your config.yml, for example:

data_dog_audit:
    unaudited_entities:
        - AppBundle\Entity\NoAuditForThis

Specify Audited Entities

Sometimes, it is also possible, that you want to create audit log entries only for particular entities. You can achieve it quite similar to unaudited entities. You can list them under the audited_entities configuration key in your config.yml, for example:

data_dog_audit:
    audited_entities:
        - AppBundle\Entity\AuditForThis

You can specify either audited or unaudited entities. If both are specified, only audited entities would be taken into account.

Impersonation

Sometimes, you might also want to blame the impersonator user instead of the impersonated one. You can archive this by adding the blame_impersonator configuration key in your config.yml, for example:

data_dog_audit:
    blame_impersonator: true

The default behavior is to blame the logged-in user, so it will ignore the impersonator when not explicitly declared.

Screenshots

All paginated audit log:
Screenshot

Clicked on history reference for specific resource:
Screenshot

Showing insert data:
Screenshot

License

The audit bundle is free to use and is licensed under the MIT license

Copyright (c) 2015 DATA-DOG Team

The MIT license, reference http://www.opensource.org/licenses/mit-license.php

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
  • Merge pull request #71 from chancegarcia/handle-resource-values
    By web-flow, 4 months ago
  • - json_encode will error on resource values; doctrine treats blob columns as resource streams; when getting the old/new values from the diff, check for resource variable, rewind if necessary.
    By , 4 months ago
  • Merge pull request #69 from natewiebe13/use-class-metadata-for-associations
    By web-flow, 6 months ago
  • Use class metadata to get the entity class instead of the proxy class
    By , 6 months ago
  • Merge pull request #67 from natewiebe13/symfony-5-compatibility
    By web-flow, 7 months ago
  • Allow Symfony 5 in the dev requirements
    By natewiebe13, 7 months ago
  • Update config tree builder constructor
    By natewiebe13, 7 months ago
  • Allow Symfony 5
    By natewiebe13, 7 months ago
  • Merge pull request #65 from krzysztofruszczynski/JsonFixes
    By web-flow, 9 months ago
  • Switching to json from json_array doctrine type due to deprecation
    By , 9 months ago
  • Removing json_encode to prevent double encoding
    By krzysztofruszczynski, 9 months ago
  • Merge pull request #64 from stevro/master
    By web-flow, 10 months ago
  • Change TokenStorage with TokenStorageInterface
    By web-flow, 10 months ago
  • Merge pull request #59 from stefanogironella/blame-impersonator
    By web-flow, 1 year ago
  • cs
    By , 1 year ago
  • blame impersonator
    By stefanogironella, 1 year ago
  • Merge pull request #57 from max-kovpak/patch-1
    By web-flow, 1 year ago
  • Update AuditSubscriber.php
    By web-flow, 1 year ago
  • Merge pull request #52 from mix6s/master
    By web-flow, 1 year ago
  • Fix cs
    By , 1 year ago
  • Move json_encode outside diff method
    By mix6s, 1 year ago
  • Merge pull request #51 from tamago-db/fix-doctrine-dbal-json
    By web-flow, 1 year ago
  • json_encode the diff (doctrine/dbal 2.6 BC break)
    By Mopster, 1 year ago
  • private methods now are protected
    By web-flow, 1 year ago
  • Merge pull request #44 from arthurmartins/feature/support-non-doctrine-entities
    By web-flow, 1 year ago
  • Merge pull request #45 from CaptureMedia/fix_embedded_properties
    By web-flow, 1 year ago
  • ignore embeded properties
    By dtomasi, 2 years ago
  • Added support to non-doctrine entities
    By Arthur Martins, 2 years ago
  • Merge pull request #35 from jonathanstidwillvf/master
    By web-flow, 2 years ago
  • Added support for Symfony 4
    By web-flow, 2 years ago