2017 © Pedro Peláez
 

library laravelrbac

Role Based Access Control For Laravel Projects

image

aneeq/laravelrbac

Role Based Access Control For Laravel Projects

  • Monday, May 15, 2017
  • by aneeqtariq_143
  • Repository
  • 1 Watchers
  • 0 Stars
  • 27 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 4 % Grown

The README.md

# Laravel Role Based Access Control Package

Prerequisite

  • This library is built for laravel version 5.2
  • Users Table exist in database with primary key "id"
  • At least one user must with "id" => 1 exist in the table (User with Id "1" will be assumed "Admin").

Installation

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)

Usage

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')) {}?>

Events

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

The Versions

15/05 2017

dev-master

9999999-dev

Role Based Access Control For Laravel Projects

  Sources   Download

MIT

The Requires

 

by Aneeq Tariq