rodrigopedra / laravel-simple-acl
Laravel Simple ACL
Package info
github.com/rodrigopedra/laravel-simple-acl
pkg:composer/rodrigopedra/laravel-simple-acl
Requires
- php: ^8.2
- illuminate/config: ^11.0|^12.0|^13.0
- illuminate/database: ^11.0|^12.0|^13.0
- illuminate/http: ^11.0|^12.0|^13.0
- illuminate/support: ^11.0|^12.0|^13.0
Requires (Dev)
- laravel/pint: ^1.29
- rector/rector: ^2.4
README
Requirements
- PHP 8.2+
- Laravel 11+
Installation
{
"require": {
"rodrigopedra/laravel-simple-acl": "^2.0"
}
}
- Export configuration and set the project's User model class name
- default is:
App\Models\User
- default is:
- Add
\RodrigoPedra\LaravelSimpleACL\Concerns\HasACLtrait to the project's User model - Run migrations
- Optionally load the included Middleware
- This will load and cache a logged in user's roles and permissions and define a gate to each permission
Usage
Create roles and permissions through the included RodrigoPedra\LaravelSimpleACL\Models\Role and
RodrigoPedra\LaravelSimpleACL\Models\Permission Eloquent models.
Permissions are meant to be grouped into a role, you can create a database seeder, or migration for your initial setup, for example:
$addUsers = Permission::create([ 'label' => 'add-users', 'description' => 'User is allowed to create new users', 'sort_index' => 1, ]); $removeUsers = Permission::create([ 'label' => 'remove-users', 'description' => 'User is allowed to remove users', 'sort_index' => 2, ]); Role::create([ 'label' => 'admin', 'sort_index' => 1, ])->attachPermission($addUsers)->attachPermission($removeUsers); Role::create([ 'label' => 'leader', 'sort_index' => 2, ])->attachPermission($addUsers);
You can then add or remove roles to individual users using the included trait's helper methods:
$user->attachRole(Role::hasLabel('admin')->first()); $user->detachRole(Role::hasLabel('leader')->first());
If you add the \RodrigoPedra\LaravelSimpleACL\Http\Middleware\LoadSimpleACL middleware
to your middleware stack, you can use Laravel's gate to check for permissions:
if ($user->can('add-users')) { // do something }
Even on blade views
@can('add-users') {{-- do something --}} @endcan