laravel-enso / audits
Model auditing endpoints and change-history storage for Laravel Enso
Requires
- php: ^8.2
- laravel-enso/enums: ^3.0
- laravel-enso/migrator: ^2.0
- laravel-enso/select: ^5.0
- laravel-enso/tables: ^5.0
- laravel-enso/track-who: ^3.0
- laravel-enso/users: ^2.0
- laravel/framework: ^12.0|^13.0
README
Description
Audits records Eloquent model create, update, and delete events and exposes them through an Enso table endpoint.
The package does not auto-discover auditable models. Each application or package must explicitly attach LaravelEnso\Audits\Observers\ModelObserver to the models it wants audited.
Installation
Install the package:
composer require laravel-enso/audits
Run the package migrations:
php artisan migrate
Features
- Stores
created,updated, anddeletedevents together with before/after payloads. - Uses explicit observer registration per model.
- Supports restricted payloads through an
auditableAttributes()method or$auditableAttributesmodel property. - Publishes table-init, table-data, export, and options endpoints under
api/system/audit.
Usage
Register the observer from the consuming application or package service provider:
namespace App\Providers; use App\Models\Invoice; use Illuminate\Support\ServiceProvider; use LaravelEnso\Audits\Observers\ModelObserver; class AppServiceProvider extends ServiceProvider { public function boot(): void { Invoice::observe(ModelObserver::class); } }
By default, all model attributes are recorded.
To limit the recorded payload, define either an auditableAttributes() method or an $auditableAttributes property on the model:
use Illuminate\Database\Eloquent\Model; class Invoice extends Model { public array $auditableAttributes = ['status', 'total']; }
or:
use Illuminate\Database\Eloquent\Model; class Invoice extends Model { public function auditableAttributes(): array { return ['status', 'total']; } }
Upgrade Guide
2.0.0
This is a breaking release.
Auditable model discovery was removed. Models are no longer detected through Auditable or RestrictedAuditable contracts, and the package no longer registers observers automatically.
Attach LaravelEnso\Audits\Observers\ModelObserver manually on each model that should be audited. To restrict the recorded payload, define an auditableAttributes() method or a public $auditableAttributes property on that model.
API
Main route group
Mounted under api/system/audit:
system.audit.initTablesystem.audit.tableDatasystem.audit.exportExcelsystem.audit.options
Core classes
LaravelEnso\Audits\Observers\ModelObserverLaravelEnso\Audits\Models\Audit
Depends On
Required Enso packages:
laravel-enso/enumslaravel-enso/migratorlaravel-enso/selectlaravel-enso/tableslaravel-enso/track-wholaravel-enso/users
Companion frontend package:
Contributions
are welcome. Pull requests are great, but issues are good too.
Thank you to all the people who already contributed to Enso!