tleckie / acl
PHP role access control list (acl). Acl component provides a lightweight and flexible access control list (ACL) implementation for privileges management.
Fund package maintenance!
teodoroleckie
www.paypal.com/donate?business=ZHYA2MTGA4884¤cy_code=USD
Requires
- php: ^8
- tleckie/enum: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: v3.0.0-beta.2
- infection/infection: ^0.21.5
- phpunit/phpunit: ^9.5
README
Tleckie\Acl component provides a lightweight and flexible access control list (ACL) implementation for privileges management. In general, an application may utilize such ACL‘s to control access to certain protected objects by other requesting objects.
Installation
You can install the package via composer:
composer require tleckie/acl
Usage
<?php include_once "vendor/autoload.php"; $acl = new Acl(); $acl->addRole('USER-0'); $acl->addRole('USER-1', ['USER-0']); // (USER-0) parent role. $acl->addRole('USER-2', ['USER-1']); // (USER-1) parent role. $acl->addResource('RESOURCE-0'); $acl->addResource('RESOURCE-1', ['RESOURCE-0']); // (RESOURCE-0) parent resource. $acl->addResource('RESOURCE-2', ['RESOURCE-1']); // (RESOURCE-1) parent resource. $acl->addResource('RESOURCE-3', ['RESOURCE-2']); // (RESOURCE-2) parent resource. $acl->allow(['USER-0'], ['RESOURCE-0']); $acl->deny(['USER-1'], ['RESOURCE-3'],['view','edit','list']); $acl->isAllowed('USER-0','RESOURCE-2'); // true $acl->isAllowed('USER-1','RESOURCE-3'); // true $acl->isAllowed('USER-1','RESOURCE-3', 'view'); // false $acl->isAllowed('USER-2','RESOURCE-3'); // true $acl->isAllowed('USER-2','RESOURCE-3', 'view'); // false