fbpkg/laravel-rbac

A lightweight and flexible RBAC package for Laravel.

Maintainers

Package info

github.com/fbpkg/laravel-rbac

pkg:composer/fbpkg/laravel-rbac

Transparency log

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v0.2.0 2026-07-31 12:00 UTC

This package is not auto-updated.

Last update: 2026-08-14 12:18:09 UTC


README

A lightweight, framework-friendly Role-Based Access Control (RBAC) package for Laravel.

Designed for projects that need a simple, flexible and extensible authorization layer based on Roles and Permissions, without unnecessary complexity.

Features

  • Role and Permission management
  • Polymorphic role assignments
  • Full-access roles
  • Route middleware for roles and permissions
  • Configurable models
  • Configurable table names
  • Laravel 11 & 12 support
  • PHP 8.2+

Requirements

  • PHP 8.2+
  • Laravel 11.x / 12.x

Installation

Install the package using Composer.

composer require fbpkg/laravel-rbac

Configuration

Publish the configuration file to customize the package.

php artisan vendor:publish --tag=rbac-config

Available options include:

  • Role model
  • Permission model
  • Database table names

Database

Publish the migration.

php artisan vendor:publish --tag=rbac-migrations

Run the migration.

php artisan migrate

Usage

Add the HasRoles trait

use Fbpkg\Rbac\Traits\HasRoles;

class User extends Authenticatable
{
    use HasRoles;
}

Create a role

use Fbpkg\Rbac\Models\Role;

Role::create([
    'name' => 'admin',
    'display_name' => 'Administrator',
]);

Create a role with unrestricted access.

Role::create([
    'name' => 'developer',
    'display_name' => 'Developer',
    'has_full_access' => true,
]);

Create a permission

use Fbpkg\Rbac\Models\Permission;

Permission::create([
    'name' => 'users.create',
    'display_name' => 'Create Users',
]);

Assign roles

$user->assignRole('admin');

Assign multiple roles.

$user->assignRole(
    'admin',
    'manager'
);

Synchronize roles.

$user->syncRoles(
    'manager'
);

Remove roles.

$user->removeRole(
    'manager'
);

Check roles

$user->hasRole('admin');

$user->hasAnyRole(
    'admin',
    'manager'
);

$user->hasAllRoles(
    'admin',
    'manager'
);

Assign permissions

$role->assignPermission(
    'users.create'
);

Assign multiple permissions.

$role->assignPermission(
    'users.create',
    'users.edit'
);

Synchronize permissions.

$role->syncPermissions(
    'users.create'
);

Remove permissions.

$role->removePermission(
    'users.edit'
);

Check permissions

$user->hasPermission(
    'users.create'
);

$user->hasAnyPermission(
    'users.create',
    'users.edit'
);

$user->hasAllPermissions(
    'users.create',
    'users.edit'
);

Full Access Roles

Roles with the has_full_access flag automatically bypass all permission checks.

This is useful for roles such as Developer, Owner, or other privileged system accounts.

Route Middleware

Protect routes by role.

Route::middleware('role:admin')->group(function () {
    //
});

Protect routes by permission.

Route::middleware('permission:users.create')->group(function () {
    //
});

License

This package is open-sourced software licensed under the MIT License.