Downloads
Stars
Version
Laravel | ACL Manager | PHP |
---|---|---|
4.2.x | 1.x | >= 5.4 |
5.0.x | 2.x | >= 5.4 |
Adds ACL to Laravel 5. This ACL solution for Laravel is useful when you need to store policy rules or users' roles into a database. ACL Manager are composed by three entities:
Add the following line to the require
section of composer.json
:
{
"require": {
"thinkingmik/acl-manager-laravel": "2.x"
}
}
'ThinKingMik\AclManager\AclManagerServiceProvider',
into the service provider list in config/app.php
.'Acl' => 'ThinKingMik\AclManager\Facades\AclManagerFacade',
into the list of aliases in config/app.php
.'ThinKingMik\AclManager\Middleware\AclManagerExceptionHandler',
into the list of middlewere in app/Http/Kernel.php
.In order to use the Acl Manager publish its configuration and migrations first
php artisan vendor:publish
Note: migrations are only published, remember to run them when ready.
This package comes with all the migrations you need to run a full featured Acl Manager. First of all you need to check the reference to the user table name:
config/auth.php
at the section:/*
|--------------------------------------------------------------------------
| Authentication Table
|--------------------------------------------------------------------------
|
| When using the "Database" authentication driver, we need to know which
| table should be used to retrieve your users. We have chosen a basic
| default value but you may easily change it to any table you like.
|
*/
'table' => 'system_users',
user_id
foreign key in these files database/migrations
:xxx_000006_create_acl_users_roles_table.php
xxx_000005_create_acl_users_policies_table.php
user_id
foreign key in all the above files to be sure that the user table name is the same as 'table' => 'system_users'
:$table->foreign('user_id')->references('id')->on('system_users')
php artisan migrate
Edit the file config/acl.php
to suit your needs.
You can use Acl Manager in routes as a filter
Route::get('/private', array('before' => 'auth|acl:admin.*', 'uses' => function() {
}));
All checks are made on user_id
attribute retrieved from session.
You can define many different acl:
filters:
acl:role.resource.permission //check if logged user has role and the permission on resource
acl:*.resource.permission //check if logged user has permission on resource
acl:role.* //check if logged user has role
acl:role.resource.* //check if logged user has role and any permissions on resource
acl:*.resource.* //check if logged user has any permissions on resource
You can also combine these filters with ;
separator like:
acl:admin.*;guest.*
The Acl Manager is available through the Facade Acl
or through the acl service in the IOC container.
The methods available are:
/**
* Check if user ID has a specified policy/policies
* @param integer $user User ID
* @param string $policies The policies used in routing
* return boolean
**/
Acl::isRouteAllowed(1, 'admin.*;guest.*');
/**
* Check if user has permission on resource
* @param array $users Array of user objects or array of user IDs
* @param array $resources Array of resource objects or array of resource IDs
* @param array $permissions Array of permission objects or array of permission IDs
* return boolean
**/
Acl::isAllowed(array(1), array('post', 'dashboard'), array('edit', 'view'));
/**
* Check if role has permission on resource
* @param array $roles Array of role objects or array of role IDs
* @param array $resources Array of resource objects or array of resource IDs
* @param array $permissions Array of permission objects or array of permission IDs
* return boolean
**/
Acl::areAnyRolesAllowed(array(1), array('post', 'dashboard'), array('edit', 'view'));
/**
* Check if user has roles
* @param array $users Array of user objects or array of user IDs
* @param array $roles Array of role objects or array of role IDs
* return boolean
**/
Acl::hasRole(array(1), array('1', '2'));
/**
* Add permissions on resources for users specified
* @param array $users Array of user objects or array of user IDs
* @param array $resources Array of resource objects or array of resource IDs
* @param array $permissions Array of permission objects or array of permission IDs
* @param date [$expire] Optionally you can specify an expiration date for policies
* return boolean
**/
Acl::allowUsers(array(1), array('post', 'dashboard'), array('edit', 'view'), '2099-11-01');
/**
* Add permissions on resources for roles specified
* @param array $roles Array of role objects or array of role IDs
* @param array $resources Array of resource objects or array of resource IDs
* @param array $permissions Array of permission objects or array of permission IDs
* @param date [$expire] Optionally you can specify an expiration date for policies
* return boolean
**/
Acl::allowRoles(array(1), array('post', 'dashboard'), array('edit', 'view'), '2099-11-01');
/**
* Remove permissions on resources for users specified
* @param array $users Array of user objects or array of user IDs
* @param array $resources Array of resource objects or array of resource IDs
* @param array $permissions Array of permission objects or array of permission IDs
* return integer The number of deleted policies
**/
Acl::denyUsers(array(1), array('post', 'dashboard'), array('edit', 'view'));
/**
* Remove permissions on resources for roles specified
* @param array $roles Array of role objects or array of role IDs
* @param array $resources Array of resource objects or array of resource IDs
* @param array $permissions Array of permission objects or array of permission IDs
* return integer The number of deleted policies
**/
Acl::denyRoles(array(1), array('post', 'dashboard'), array('edit', 'view'));
/**
* Add roles to users
* @param array $users Array of user objects or array of user IDs
* @param array $roles Array of role objects or array of role IDs
* @param char [$main] Optionally you can specify the main role
* return boolean
**/
Acl::addUsersRoles(array(1), array('1', '2'), 'Y');
This package is released under the MIT License.