rodrigopedra/laravel-simple-acl

Laravel Simple ACL
1,286 1
Install
composer require rodrigopedra/laravel-simple-acl
Latest Version:v2.2.1
PHP:^8.2
Laravel:11 · 12 · 13
Older releases:5 – 10
License:MIT
Last Updated:Jul 29, 2026
Links: GitHub  ·  Packagist
Maintainer: rodrigo.pedra

Laravel Simple ACL

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
  • 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

Related Packages

a2design-inc/laravel4-acl

ACL component for Laravel 4

1,390 0
marks/acl

ACL service for Laravel 4.x

155 1
mdsys/laravel-acl

ACL component for Laravel 4

37 2
nahid/permit

Permit is a laravel ACL and authorization package

5,138 74

Version History

Version Released PHP Laravel License
v2.2.1 ^8.2 ^11.0|^12.0|^13.0 MIT
v2.1.0 ^8.2 ^11.0|^12.0|^13.0 MIT
v2.0.0 ^8.2 ^11.0|^12.0|^13.0 MIT
v1.2.0 ^8.1 ^9.0|^10.0|^11.0|^12.0 MIT
v1.1.1 ^8.1 ^9.0|^10.0|^11.0 MIT