hevertonfreitas/cakephp-audit-log

A logging plugin for CakePHP. It takes a snapshot of the fully hydrated object after a change is complete and it also records each individual change in the case of an update action

4.0.0 2019-12-16 13:55 UTC

This package is auto-updated.

Last update: 2024-04-09 14:42:56 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version codecov License

A logging plugin for CakePHP. The included AuditableBehavior creates an audit history for each instance of a model to which it's attached.

The behavior tracks changes on two levels. It takes a snapshot of the fully hydrated object after a change is complete and it also records each individual change in the case of an update action.

Features

  • Support for CakePHP 4.0
  • Tracks object snapshots as well as individual property changes.
  • Allows each revision record to be attached to a source -- usually a user -- of responsibility for the change.
  • Allows developers to ignore changes to specified properties. Properties named created, updated and modified are ignored by default, but these values can be overwritten.
  • Handles changes to HABTM associations.
  • Does not require or rely on the existence of explicit models revisions (AuditLog) and deltas (AuditLogDeltas).

Installation

You can install this plugin into your CakePHP application using composer.

The recommended way to install composer packages is:

composer require hevertonfreitas/cakephp-audit-log

Load your plugin using

bin/cake plugin load AuditLog

or by manually putting $this->addPlugin('AuditLog'); in the bootstrap method of your src/Application.php.

Then, run the necessary migrations

bin/cake migrations migrate -p AuditLog

Next Steps

  1. Create a currentUser() method, if desired.

    The AuditableBehavior optionally allows each changeset to be "owned" by a "source" -- typically the user responsible for the change. Since user and authentication models vary widely, the behavior supports a callback method that should return the value to be stored as the source of the change, if any.

    The currentUser() method must be available to every model that cares to track a source of changes. It should return an array with a key id describing the primary key of the user that changed the record.

Usage

Applying the AuditableBehavior to a model is essentially the same as applying any other CakePHP behavior. The behavior does offer a few configuration options:

`ignore`
An array of property names to be ignored when records are created in the deltas table.
`habtm`
An array of models that have a HABTM relationship with the acting model and whose changes should be monitored with the model. If the HABTM model is auditable in its own right, don't include it here. This option is for related models whose changes are _only_ tracked relative to the acting model.

License

This code is licensed under the MIT license.

Notes

Feel free to submit bug reports or suggest improvements in a ticket or fork this project and improve upon it yourself. Contributions welcome.