PHP code example of paliari / php-acl

1. Go to this page and download the library: Download paliari/php-acl library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

paliari / php-acl example snippets


$user_permissions = [
    'customers' => [
        'products' => [
            'index' => true,
            'show' => true
        ],
        'services' => true
    ],
    'admin' => true
];
$acl = new Paliari\PhpAcl\Acl($user_permissions);


// With permission
$callable = 'Customers\\Products:index';
$response = $acl->allowed(Paliari\PhpAcl\AclOperator::keys($callable));
var_export($response); // true


// Without permission
$callable = 'Customers\\Products:destroy';
$response = $acl->allowed(Paliari\PhpAcl\AclOperator::keys($callable));
var_export($response); // false



namespace Middlewares;

use Slim\Http\Response,
    Slim\Http\Request,
    Paliari\PhpAcl\Acl,
    Paliari\PhpAcl\AclOperator;

class AclMiddleware
{
    public function __invoke(Request $request, Response $response, $next)
    {
        // Set the "route" and "user" in a previous middleware
        
        $route = $request->getAttribute('route');
        $callable = $route->getCallable();
        $user = $request->getAttribute('user');
        $acl = new Acl($user->permissions);
        if (!$acl->allowed(AclOperator::keys($callable))) {
            return $response->withJson(['error' => 'Permission denied'], 403);
        }

        return $next($request, $response);
    }
}


$user_permissions = [
    'customers' => [
        'products' => [
            'show' => true
        ],
    ],
];
$acl = new Paliari\PhpAcl\Acl($user_permissions);

$callable = 'Customers\\Products:index';
\Paliari\PhpAcl\AclWhiteList::setKey($callable, true);
$response = \Paliari\PhpAcl\AclWhiteList::isSkip($callable) || $acl->allowed(Paliari\PhpAcl\AclOperator::keys($callable));
var_export($response); // true
bash

composer