dev-master
9999999-devRole Based Access Control For Laravel Projects
MIT
The Requires
by Aneeq Tariq
Wallogit.com
2017 © Pedro Peláez
Role Based Access Control For Laravel Projects
1 Install RBAC Package by adding the following lines into composer.json file, (*1)
"require": {
"aneeq/laravelrbac": "dev-master"
}
or, (*2)
composer require "aneeq/laravelrbac:dev-master"
2 Add the below line in autoload ps4 selection of composer.json file., (*3)
"Aneeq\\LaravelRbac\\": "vendor/aneeq/laravelrbac/src"
3 Add Provider into app.php config file., (*4)
Aneeq\LaravelRbac\Providers\RbacServiceProvider::class
4 Add Middleware into routeMiddleware of App/Http/Kernel.php file., (*5)
'role' => \Aneeq\LaravelRbac\Middleware\RbacRole::class, 'permission' => \Aneeq\LaravelRbac\Middleware\RbacPermission::class
5 Publish Package Files., (*6)
php artisan vendor:publish --provider="Aneeq\LaravelRbac\Providers\RbacServiceProvider"
The above command will copy Config, Migrations, Seeds and views file., (*7)
Note: If you want to Publish Specific files then, use the above command with --tag="config", (*8)
6 Migrate and Seed published tables., (*9)
php artisan migrate php artisan db:seed --class=RolesTableSeeder php artisan db:seed --class=PermissionsTableSeeder php artisan db:seed --class=RolesPermissionsTableSeeder php artisan db:seed --class=UsersRolesTableSeeder
7 Implement RbacUserInterface and RbacUserTrait on Laravel User Model, (*10)
use Aneeq\LaravelRbac\Interfaces\RbacUserInterface;
use Aneeq\LaravelRbac\Traits\RbacUserTrait;
class User extends Authenticatable implements RbacUserInterface
{
use RbacUserTrait;
Installation Completed, (*11)
1 Controller Authorization, (*12)
if(!$request->user()->can('dashboad')){
return redirect('unauthorized-access');
}
2 Middleware Authorization, (*13)
Route::get('/url', 'Controller@function')->middleware('permission:permission-name')
3 view File Authorization, (*14)
<?php if (Auth::user()->can('dashboard')) {}?>
This package raises 4 event during "Assigning Permissions to the role" and "Assign Roles to the user". You may attach listeners to these events in your App\Providers\EventServiceProvider, (*15)
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'Aneeq\LaravelRbac\Events\PreRolesAssignEvent' => [ // This event raise before Roles assigned to the User
// Here is the list of User Defined Listner Class
'App\Listeners\PreRolesAssignEventListener',
],
'Aneeq\LaravelRbac\Events\PostRolesAssignEvent' => [ // This event raise after Roles assigned to the User
// Here is the list of User Defined Listner Class
'App\Listeners\PostRolesAssignEventListener',
],
'Aneeq\LaravelRbac\Events\PrePermissionAssignEvent' => [ // This event raise before Permissions assigned to the Role
// Here is the list of User Defined Listner Class
'App\Listeners\PrePermissionAssignEventListner',
],
'Aneeq\LaravelRbac\Events\PostPermissionAssignEvent' => [ // This event raise After Permissions assigned to the Role
// Here is the list of User Defined Listner Class//
'App\Listeners\PostPermissionAssignEventListner',
],
];
Example of Pre & Post RolesAssignEvent, (*16)
<?php
namespace App\Listeners;
use Aneeq\LaravelRbac\Events\PreRolesAssignEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class PreRolesAssignEventListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param PreRolesAssignEvent $event
* @return void
*/
public function handle(PreRolesAssignEvent $event)
{
//dd($event->roles);
}
}
Example of Pre & Post PermissionAssignEvent, (*17)
<?php
namespace App\Listeners;
use Aneeq\LaravelRbac\Events\PostPermissionAssignEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class PostPermissionAssignEventListner
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param PostPermissionAssignEvent $event
* @return void
*/
public function handle(PostPermissionAssignEvent $event)
{
//dd($event->permissions);
}
}
Role Based Access Control For Laravel Projects
MIT