rmasters / culpa
Adds Blameable support to Eloquent models in Laravel
Installs: 2 142
Dependents: 0
Suggesters: 0
Security: 0
Stars: 24
Watchers: 4
Forks: 10
Open Issues: 7
Requires
- php: >=5.3.0
- illuminate/config: 4.*
- illuminate/events: 4.*
- illuminate/support: 4.*
Requires (Dev)
- illuminate/database: 4.*
- mockery/mockery: 0.8.*
- phpunit/phpunit: 3.7.*
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-11-18 15:05:08 UTC
README
Blameable extension for Laravel's Eloquent ORM models. This extension automatically adds references to the authenticated user when creating, updating or soft-deleting a model.
Installation
This package works with PHP 5.3 and above, but includes traits to make it easier to use on PHP 5.4+.
To install the package in your project:
- Add to the require section of your
composer.json
:"rmasters/culpa": "dev-master"
, - Run
composer update
, - Add to the
providers
list in config/app.php:"Culpa\CulpaServiceProvider"
, - Publish the configuration to your application:
artisan config:publish rmasters/culpa
Usage
You can add auditable fields on a per-model basis by adding a protected property
and a model observer. The property $blameable
contains events you wish to
record - at present this is restricted to created, updated and deleted - which
function the same as Laravel's timestamps.
class Comment extends Eloquent {
protected $blameable = array('created', 'updated', 'deleted');
- On create, the authenticated user will be set in
created_by_id
, - On create and update, the authenticated user will be set in
updated_by_id
, - Additionally, if the model is soft-deletable, the authenticated user will be
set in
deleted_by_id
.
To activate the automatic updating of these fields, you need to add the model observer to this model:
class Comment extends Eloquent {
// ...
}
Comment::observe(new Culpa\BlameableObserver);
The names of the columns used can be changed by passing an associative array of event names to columns:
protected $blameable = array(
'created' => 'author_id',
'updated' => 'revised_by_id'
);
You will need to add these fields to your migrations for the model (unsigned integer fields with foreign keys as appropriate), and add accessors to your model:
class Comment extends Eloquent {
public function createdBy() {
return $this->belongsTo('User');
}
}
If you're using PHP 5.4 or above, you can take advantage of the provided traits
to add these methods automatically (Culpa\CreatedBy
, Culpa\UpdatedBy
,
Culpa\DeletedBy
).
Changing the user source
The culpa::users.active_user
config should yield a function that returns a
user id, or null if there is no user authenticated.
'users' => [
// The default implementation:
'active_user' => function() {
return Auth::check() ? Auth::user()->id : null;
}
// or, for Sentry2 integration:
'active_user' => function() {
return Sentry::check() ? Sentry::getUser()->id : null;
}
Changing the user class
By default, the fields will relate to User
- this can be configured as so in
the package configuration file:
'users' => array(
// Use the Sentry2 user model
'classname' => 'Cartalyst\Sentry\Users\Eloquent\User'
)
License
Culpa is released under the MIT License.