rodrigopedra / laravel-simple-acl
Laravel Simple ACL
v1.1.1
2024-03-08 02:50 UTC
Requires
- php: ^8.1
- illuminate/config: ^9.0|^10.0|^11.0
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/http: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
README
Requirements
- PHP 8.1
- Laravel 9+
Installation
{ "require": { "rodrigopedra/laravel-simple-acl": "^1.0" } }
- Export configuration and set the project's User model class name
- default is:
App\Models\User
- default is:
- Add
\RodrigoPedra\LaravelSimpleACL\Concerns\HasACL
trait 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