deizel / Footprint

CakePHP plugin to allow passing currently logged in user to model layer.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Footprint

Build Status Coverage Total Downloads License

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.

Install

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');

Usage

Trait

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';
}

Behavior

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.

Patches & Features

  • 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

Bugs & Feedback

http://github.com/usemuffin/footprint/issues

Credits

This was originally inspired by Ceeram/Blame.

License

Copyright (c) 2015, Use Muffin and licensed under The MIT License.

About

CakePHP plugin to allow passing currently logged in user to model layer.

License:MIT License


Languages

Language:PHP 100.0%