insenseanalytics/laravel-user-audit-trails

User audit trails for Laravel Eloquent.

v2.0 2020-09-23 14:53 UTC

This package is auto-updated.

Last update: 2022-06-29 02:15:24 UTC


README

tests License Latest Stable Version Total Downloads

This package is created to add audit user trails by using Laravel Eloquent ORM. Using this package, you would be able to record in the respective database tables, the created_by, updated_by and deleted_by user IDs.

Basic Example

Add the audit trail columns in your database migrations like so:

$table->usertrails(); // for created_by, updated_by
$table->deletetrails(); // for deleted_by

Next, in your model just use the HasUserTrails and HasDeleteTrails trait to automatically setup audit user trails like so:

class Post extends \Illuminate\Database\Eloquent\Model
{
    use \Insense\LaravelUserAuditTrails\HasUserTrails;
    use \Insense\LaravelUserAuditTrails\HasDeleteTrails;
}

That's it! Now, sit back and observe the magic of audit user trails. When a new record is created, created_by will be updated to the user ID that created it. When a record is updated, updated_by will be updated to the user ID that updated it. When a record is soft deleted, deleted_by will be updated to the user ID that deleted it.

Requirements

Quick Installation

$ composer require insenseanalytics/laravel-user-audit-trails

Service Provider (Optional / auto discovered on Laravel 5.5+)

Register provider on your config/app.php file.

'providers' => [
    ...,
    Insense\LaravelUserAuditTrails\UserTrailsServiceProvider::class,
]

Setting Up Custom Column Names

If you want to override the default audit trail names of created_by, updated_by and deleted_by, you may do so like so:

In your database migration, add the audit trail columns like so:

$table->usertrails('your-created-by-column', 'your-updated-by-column');
$table->deletetrails('your-deleted-by-column');

Next, in your model, override the static properties CREATED_BY, UPDATED_BY and DELETED_BY. Note that PHP does not allow overriding static properties in the same class, so you would need to extend your model class from a base model class that uses the \Insense\LaravelUserAuditTrails\HasUserTrails trait like so:

First create your base model class (if not already created). If already created, just add the trait.

class BaseModel extends \Illuminate\Database\Eloquent\Model
{
    use \Insense\LaravelUserAuditTrails\HasUserTrails;
    use \Insense\LaravelUserAuditTrails\HasDeleteTrails;
}

Next, override the static properties CREATED_BY, UPDATED_BY and DELETED_BY in your model (that extends the base model) like so:

class YourModel extends BaseModel
{
    public static $CREATED_BY = 'your-created-by-column';
    public static $UPDATED_BY = 'your-updated-by-column';
    public static $DELETED_BY = 'your-deleted-by-column';
}

Omitting Updated By or Created By Columns

If you wish to omit one of the audit trail columns, you can just set the one you would like to omit to null in your database migration like so:

$table->usertrails('created_by', null);

The example above omits the updated_by column. You can also do the reverse to omit updated_by by setting the first argument to null.

Next, override the static properties CREATED_BY and UPDATED_BY in your model (that extends the base model) to set the omitted property to null like so:

class YourModel extends BaseModel
{
    public static $CREATED_BY = 'created_by';
    public static $UPDATED_BY = null;
}

Contributing

We are open to PRs as long as they're backed by tests and a small description of the feature added / problem solved.

License

The MIT License (MIT). Please see License File for more information.