2017 © Pedro Peláez
 

library acl

Simple role-based access control for Laravel 4

image

goez/acl

Simple role-based access control for Laravel 4

  • Friday, March 11, 2016
  • by jaceju
  • Repository
  • 1 Watchers
  • 2 Stars
  • 43 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Simple role-based access control

Build Status Code Climate Test Coverage, (*1)

Requirement

  • PHP 7.4+

Installation

Goez/Acl is an independent library for access control, you can use it in any PHP project with composer:, (*2)

composer require goez/acl

Laravel

Goez/Acl also supports Laravel 5.4, just follow the steps below:, (*3)

  1. Install from composer., (*4)

  2. Publish configuration after composer require., (*5)

    php artisan vendor:publish --tag=acl-config
    
  3. Edit app/config/packages/goez/acl/config.php:, (*6)

    <?php
    return [
        'init' => function ($acl) {
    
            // Initialize your permission here.
            // Example:
            //
            // $acl->fullPrivileges('admin');
            // $acl->allow('author', 'read', 'article');
            // $acl->allow('author', 'write', 'article');
            // $acl->allow('guest', 'read', 'article');
            // $acl->deny('guest', 'write', 'article');
    
        },
    ];
    
  4. Use methods of Acl in your code:, (*7)

    // In controller:
    if ($acl->can('member', 'read', 'article')) {
        // ...
    }
    

    In Blade template:, (*8)

    @if (app('acl')->can('member', 'read', 'article`))
    <!-- .... -->
    @endif
    

More Examples

For the examples below, you need to create an instance of Acl first:, (*9)

use Goez\Acl\Acl;

$acl = new Acl();

Add Role

$acl->addRole('admin');
$acl->addRole('member');
$acl->addRole('guest');

var_dump($acl->hasRole('admin')); // true
var_dump($acl->hasRole('member')); // true
var_dump($acl->hasRole('notExists')); // false

Create rules for role

$acl->allow('guest', 'read', 'article');
$acl->deny('guest', 'write', 'article');

var_dump($acl->can('guest', 'read', 'article')); // true
var_dump($acl->can('guest', 'write', 'article')); // false

Note 1: Methods allow and deny will add role automatically., (*10)

Note 2: It's always denied by default unless you allowed it., (*11)

Override rule

$acl->allow('author', 'read', 'article'); // rule 1
$acl->allow('author', 'write', 'article'); // rule 2
$acl->deny('author', 'read', 'article'); // rule 3, override rule 1
$acl->deny('author', 'write', 'article'); // rule 4, override rule 2

var_dump($acl->can('author', 'read', 'article')); // false
var_dump($acl->can('author', 'write', 'article')); // false

Full privileges

$acl->fullPrivileges('admin');

var_dump($acl->can('admin', 'create', 'page')); // true
var_dump($acl->can('admin', 'create', 'site')); // true
var_dump($acl->can('admin', 'read', 'article')); // true
var_dump($acl->can('admin', 'write', 'article')); // true

Note: Method fullPrivileges will add role automatically., (*12)

Multiple actions or resources

$actions = ['create', 'read', 'write'];
$resources = ['page', 'site', 'article'];

$acl->allow('guest', 'read', $resources);
$acl->allow('author', $actions, 'article');
$acl->allow('admin', $actions, $resources);

Wildcard support for action

$acl->allow('author', '*', 'article');

var_dump($acl->can('author', 'read', 'article')); // true
var_dump($acl->can('author', 'write', 'article')); // true

var_dump($acl->can('author', 'read', 'news')); // false
var_dump($acl->can('author', 'write', 'news')); // false

Wildcard support in can method.

$acl->allow('guest', 'write', 'article:comment');

var_dump($acl->can('guest', '*', 'article')); // true
var_dump($acl->can('guest', '*', 'article:content')); // false
var_dump($acl->can('guest', '*', 'news:*')); // false

Sub resource

Use : to define the sub-resource., (*13)

In this example, article as same as article:*., (*14)

$acl->allow('guest', 'read', 'article');
$acl->allow('guest', 'write', 'article:comment');
$acl->allow('author', '*', 'article:*');

var_dump($acl->can('author', 'read', 'article:title')); // true
var_dump($acl->can('author', 'read', 'article:content')); // true
var_dump($acl->can('author', 'read', 'article:comment')); // true
var_dump($acl->can('author', 'write', 'article:title')); // true
var_dump($acl->can('author', 'write', 'article:content')); // true
var_dump($acl->can('author', 'write', 'article:comment')); // true

var_dump($acl->can('guest', 'read', 'article:title')); // true
var_dump($acl->can('guest', 'read', 'article:content')); // true
var_dump($acl->can('guest', 'read', 'article:comment')); // true
var_dump($acl->can('guest', 'write', 'article:title')); // false
var_dump($acl->can('guest', 'write', 'article:content')); // false
var_dump($acl->can('guest', 'write', 'article:comment')); // true

License

MIT, (*15)

The Versions

11/03 2016

dev-master

9999999-dev

Simple role-based access control for Laravel 4

  Sources   Download

MIT

The Requires

 

The Development Requires

by Jace Ju

laravel rbac

21/01 2015

4.0

4.0.0.0

Simple role-based access control for Laravel 4

  Sources   Download

MIT

The Requires

 

The Development Requires

by Jace Ju

laravel rbac