Access Control List
Introduction
UnoPim's Access Control List (ACL) feature enhances security by allowing administrators to finely manage user access across different application sections. It enables precise control over permissions, ensuring users only access authorized resources and actions. By defining roles and assigning privileges based on organizational structures or responsibilities, UnoPim's ACL strengthens governance, safeguards sensitive data, and ensures compliance with policies. This capability supports a secure and customizable user experience, adapting permissions dynamically to meet evolving organizational needs, thereby enhancing operational efficiency.
Directory Structure
To configure Access Control List (ACL) settings in UnoPim, follow these structured steps:
Create Configuration File
Begin by creating a new file named acl.php within the Config directory of your package located at packages/Webkul/Example/src/Config:
└── packages
└── Webkul
└── Example
└── src
├── ...
└── Config
├── acl.php
└── ...Define ACL Configuration
Inside acl.php, define ACL settings using an array format. Each array element represents a menu item or resource with parameters such as key, name, route, and sort. Here’s an example:
Add the following code to acl.php:
<?php
return [
[
'key' => 'example',
'name' => 'example::app.acl.example',
'route' => 'example.admin.index',
'sort' => 2
]
];Each array element defines one permission with a key, a name, the route it guards, and a sort order. The name must be a translation key, not a literal string, so the permission label follows the admin's locale. Keys are flat and dot-separated (example, example.create, example.edit, example.delete) — there is no nested children array.
Merge ACL Configuration
To merge the ACL configuration, follow these steps:
Modify Service Provider
Navigate to the ExampleServiceProvider class within the Webkul\Example\Providers namespace.
Register Method
Inside the register method of your service provider, use the mergeConfigFrom method to merge your ACL configuration file:
<?php
namespace Webkul\Example\Providers;
use Illuminate\Support\ServiceProvider;
class ExampleServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
//...
$this->mergeConfigFrom(
dirname(__DIR__) . '/Config/acl.php', 'acl'
);
}
}Ensure that the path specified in mergeConfigFrom matches the location of your acl.php file.
This will merge the ACL configuration with the existing configuration.
Clear Configuration Cache
After making changes, clear the cached config so the new ACL entries are picked up:
php artisan optimize:clearVerify in Admin Panel
Check the updated ACL configuration within the admin panel to confirm that menu items are correctly displayed and sorted according to your configuration.
This will ensure that the latest ACL configuration is used.
Checking Roles and Permissions
To manage roles and permissions effectively:
Access Roles
In the Admin model located in Webkul\User\Models, utilize the relationship with the Role model to manage roles associated with users.
Permission Checks
Use the bouncer() helper function to verify if a user has specific permissions. Example usage:
bouncer()->hasPermission($permission)Replace $permission with the actual permission you want to check.
By following these steps, you can seamlessly configure and manage Access Control List (ACL) settings in UnoPim, ensuring secure and controlled access to administrative functionalities.