2017 © Pedro Peláez
 

library access

Role and Permission control for Laravel

image

panoscape/access

Role and Permission control for Laravel

  • Tuesday, February 14, 2017
  • by seancheung
  • Repository
  • 1 Watchers
  • 1 Stars
  • 6 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 0 % Grown

The README.md

Build Status Total Downloads Latest Stable Version License , (*1)

Access

Role and Permission control for Laravel, (*2)

Installation

Composer

composer require panoscape/access

Service provider

config/app.php, (*3)

'providers' => [
    ...
    Panoscape\Access\AccessServiceProvider::class,
];

Facades

config/app.php, (*4)

'aliases' => [
    ...
    'Access' => Panoscape\Access\Facades\Access::class,
];

Permission and Role

config/app.php, (*5)

'aliases' => [
    ...
    'App\Permission' => Panoscape\Access\Permission::class,
    'App\Role' => Panoscape\Access\Role::class,
];

Middleware

app/Http/Kernel.php, (*6)

protected $routeMiddleware = [
  ...
  'access' => \Panoscape\Access\Middleware\VerifyAccess::class,
];

Migration

php artisan vendor:publish --provider="Panoscape\Access\AccessServiceProvider" --tag=migrations

Before migrating, you'll need to modify the users table in the published migration file to the correct user table used in your application, (*7)

//TODO: user table
$table->foreign('user_id')->references('id')->on('users')

Usage

Add HasRoles trait to user model., (*8)

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\SoftDeletes;
use Panoscape\Access\HasRoles;

class User extends Authenticatable
{
    use Notifiable, SoftDeletes, HasRoles;
}

Get roles and permissions

$user->roles();
$user->permissions();

$role->permissions();
$role->users();

$permission->roles();

You may also use dynamic properties, (*9)

$user->roles;
$user->permissions;

$role->permissions;
$role->users;

$permission->roles;

Check roles and permissions

//return true if the user has this role
$user->hasRoles('admin');
//return true if the user has all three roles
$user->hasRoles(['admin', 'editor', 'author']);
//equivalent to array
$user->hasRoles('admin|editor|author');
//return true if the user has any of the three roles
$user->hasRoles(['admin', 'editor', 'author'], false);
//by default it checks 'name' column; you may specify which column to check
$user->hasRoles([1, 3, 12], true, 'id');

//or check permissions
$user->hasPermissions('edit_users');

//also available on role
$role->hasPermissions('edit_users');

Attach/Detach/Sycn

//by name
$user->attachRoles('admin');
//by id
$user->attachRoles(1);
//by model instance
$user->attachRoles($role);
//with array
$user->attachRoles(['admin', 'editor']);
$user->attachRoles([1, 2]);
//specify column
$user->attachRoles(['1', '2'], 'id');

//detach
$user->detachRoles('admin');
//detach all
$user->detach([]);

//sync
$user->syncRoles('admin');
//detach all
$user->syncRoles([]);
//sync without detaching
$user->syncRoles(['admin', 'editor'], false);

//same with role and permissions
$role->attachPermissions('editor_users');
$role->detachPermissions('editor_users');
$role->syncPermissions('editor_users');

Facades

//check the current authenticated user's roles and permissions
Access::hasRoles('admin');
Access::hasPermissions('edit_users');

//check the given user's roles and permissions
Access::hasRoles('admin', true, 'name', $user);
Access::hasPermissions('edit_users', true, 'name', $user);

//attach roles to current authenticated user
Access::attachRoles('admin');
Access::attachRoles(['admin', 'editor']);

//attach roles to the given user
Access::attachRoles('admin', 'name', $user);
Access::attachRoles(['admin', 'editor'], 'name', $user);

Middleware

//role
Route::get('/dashboard', 'DashboardController@index')->middleware('access:roles,admin');
//permission
Route::get('/dashboard', 'DashboardController@index')->middleware('access:permissions,edit_users');
//multiple
Route::get('/dashboard', 'DashboardController@index')->middleware('access:permissions,edit_users|manage_sites');
//requirement and column
Route::get('/dashboard', 'DashboardController@index')->middleware('access:permissions,1|3,false,id');

Blade

@roles('admin')


<

div>
    ...


<

div>
@endroles

@permissions('edit_users|Manage_sites')


<

div>
    ...


<

div>
@endpermissions

@roles('admin|editor|root', false)


<

div>
    ...


<

div>
@endroles

@permissions('1|2|3', false, 'id')


<

div>
    ...


<

div>
@endpermissions

Testing

composer test

or, (*10)

vendor/bin/phpunit

Change Log

1.0.1 - 2016-11-24

Added

  • attach/detach/sync roles and permissions in Facades
  • Facades now accept specific user rather than always using auth()->user()
  • detaching roles when deleting users
  • detaching permissions when deleting roles
  • unit test

Changed

  • renamed access middleware's first argument to plural format: role to roles, permission to permissions
  • multiple arguments in blade directives no longer need to be wrapped in an array

Fixed

  • roles and permissions blade directives failure issue

1.0.0 - 2016-11-22

First release

The Versions

14/02 2017

dev-master

9999999-dev https://github.com/seancheung/access

Role and Permission control for Laravel

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel role permission

14/02 2017

dev-develop

dev-develop https://github.com/seancheung/access

Role and Permission control for Laravel

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel role permission

14/02 2017

1.0.2

1.0.2.0 https://github.com/seancheung/access

Role and Permission control for Laravel

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel role permission

24/11 2016

1.0.1

1.0.1.0 https://github.com/panoscape/access

Role and Permission control for Laravel

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel role permission

22/11 2016

1.0.0

1.0.0.0 https://github.com/panoscape/access

Role and Permission control for Laravel

  Sources   Download

MIT

The Requires

 

laravel role permission