This plugin allows you to pass the currently logged in user to the model layer of a CakePHP 3 application.
It comes bundled with the FootprintBehavior
to allow you control over columns such as user_id
,
created_by
, company_id
just like the core's TimestampBehavior
.
Using Composer:
composer require muffin/footprint:dev-master
You then need to load the plugin. In boostrap.php
, something like:
\Cake\Core\Plugin::load('Muffin/Footprint');
First, you will need to include the Muffin\Footprint\Auth\FootprintAwareTrait
to your AppController
:
use Muffin\Footprint\Auth\FootprintAwareTrait;
class AppController extends Controller
{
use FootprintAwareTrait;
}
This will attach the Muffin\Footprint\Event\FootprintListener
to models
which will inject the currently logged in user's instance on Model.beforeSave
and Model.afterSave
in the _footprint
key of $options
.
The user record provided by AuthComponent
is converted to User
entity before
passing to models. If your AuthComponent
is configured to use a non-default
users table you must set the $_userModel
property of the trait to same table:
public function beforeFilter(\Cake\Event\Event $event)
{
$this->_userModel = 'Members';
}
To use the included behavior to automatically update the created_by
and updated_by
fields of a record for example,
add the following to your table's initialize()
method:
$this->addBehavior('Muffin/Footprint.Footprint');
You can customize that like so:
$this->addBehavior('Footprint', [
'events' => [
'Model.beforeSave' => [
'user_id' => 'new',
'company_id' => 'new',
'modified_by' => 'always'
]
],
'propertiesMap' => [
'company_id' => '_footprint.company.id',
],
]);
This will insert the currently logged in user's primary key in user_id
and modified_by
fields when creating
a record, on the modified_by
field again when updating the record and it will use the associated user record's
company id
in the company_id
field when creating a record.
- Fork
- Mod, fix
- Test - this is important, so it's not unintentionally broken
- Commit - do not mess with license, todo, version, etc. (if you do change any, bump them into commits of their own that I can ignore when I pull)
- Pull request - bonus point for topic branches
http://github.com/usemuffin/footprint/issues
This was originally inspired by Ceeram/Blame.
Copyright (c) 2015, Use Muffin and licensed under The MIT License.