PHPackages                             metrial/laravel-rbac - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. metrial/laravel-rbac

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

metrial/laravel-rbac
====================

Enterprise-grade Role-Based Access Control for Laravel — roles, permissions, teams, hierarchy, time-bound assignments, and audit logging.

v1.0.0(1mo ago)00MITPHPPHP ^8.2CI failing

Since Jun 1Pushed 4w agoCompare

[ Source](https://github.com/KaremMetrial/metrial-rbac)[ Packagist](https://packagist.org/packages/metrial/laravel-rbac)[ Docs](https://github.com/KaremMetrial/metrial-rbac)[ RSS](/packages/metrial-laravel-rbac/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (7)Versions (2)Used By (0)

Metrial Laravel RBAC
====================

[](#metrial-laravel-rbac)

 **Enterprise-grade Role-Based Access Control for Laravel**
 Roles · Permissions · Teams · Hierarchy · Time-Bound Assignments · Audit Logging

 [![Latest Version](https://camo.githubusercontent.com/abef5e7ed876a374bec7de01004409dff5a261c803385b1d9269700c38c41676/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d65747269616c2f6c61726176656c2d726261632e737667)](https://packagist.org/packages/metrial/laravel-rbac) [![License](https://camo.githubusercontent.com/401bd119e204de9e4747ffc53f940fe390d236f53865feeec2d8680fea9da448/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6d65747269616c2f6c61726176656c2d726261632e737667)](https://packagist.org/packages/metrial/laravel-rbac) [![Tests](https://camo.githubusercontent.com/682442788a366be972fc0f3f3c3548559f4b74582857b325df4f5feac38332e2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f4b6172656d4d65747269616c2f6d65747269616c2d726261632f74657374732e796d6c)](https://github.com/KaremMetrial/metrial-rbac/actions)

Metrial RBAC is a production-ready, drop-in authorization package for Laravel applications. It provides a complete role-based access control system with teams, hierarchical roles, time-bound assignments, and a full audit trail — all without dictating your application's architecture.

---

Table of Contents
-----------------

[](#table-of-contents)

- [Features](#features)
- [Requirements](#requirements)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Configuration](#configuration)
- [Usage](#usage)
    - [Roles](#roles)
    - [Permissions](#permissions)
    - [Assigning &amp; Revoking](#assigning--revoking)
    - [Checking Authorization](#checking-authorization)
    - [Teams](#teams)
    - [Role Hierarchy](#role-hierarchy)
    - [Time-Bound Assignments](#time-bound-assignments)
    - [Blade Directives](#blade-directives)
    - [Middleware](#middleware)
    - [The Gate Layer](#the-gate-layer)
    - [The Facade](#the-facade)
- [Artisan Commands](#artisan-commands)
- [Audit Logging](#audit-logging)
- [Caching](#caching)
- [Database Schema](#database-schema)
- [Testing](#testing)
- [Security](#security)
- [License](#license)

---

Features
--------

[](#features)

FeatureDescription**Roles &amp; Permissions**Create granular roles and assign fine-grained permissions to them.**Direct Permissions**Assign permissions directly to users, bypassing roles.**Teams**Scope roles and permissions per team/tenant. Users switch context with `switchTeam()`.**Role Hierarchy**Roles inherit from other roles via a DAG closure table — no recursive queries.**Time-Bound Assignments**Assign roles or permissions with `starts_at` / `expires_at` for temporary access.**Audit Trail**Every mutation (assign, revoke, create, delete) is logged with actor, IP, context, and snapshots.**Cache-First Reads**Permission resolution is cached with automatic invalidation on mutation. Expiry-safe.**Blade Directives**`@role`, `@hasanyrole`, `@hasallroles`, `@haspermission` built in.**Middleware**Route-level `rbac.role`, `rbac.permission`, `rbac.team` middleware.**Gate Integration**Auto-registers every permission as a Gate ability. `@can`, `->can()`, `->authorize()` all work.**Soft Deletes**All mutable entities support soft deletes for history preservation.**Guard-Aware**Full multi-guard support (`web`, `api`, `sanctum`, custom).**10 Artisan Commands**Install, create, assign, revoke, cache, prune, doctor.**Super-Admin Bypass**Optional opt-in super-admin role with fully traceable bypass logging.---

Requirements
------------

[](#requirements)

RequirementVersionPHP≥ 8.2Laravel10.x, 11.x, 12.x, 13.xDatabaseMySQL 8+, PostgreSQL 14+, SQLite 3.35+---

Installation
------------

[](#installation)

### 1. Install via Composer

[](#1-install-via-composer)

```
composer require metrial/laravel-rbac
```

The package auto-discovers its service provider on Laravel 10+. No manual registration needed.

### 2. Run the Installer

[](#2-run-the-installer)

```
php artisan rbac:install
```

This publishes the config file, migrations, and scaffolds your User model with the `HasRoles` and `HasPermissions` traits.

### 3. Run Migrations

[](#3-run-migrations)

```
php artisan migrate
```

This creates all 9 RBAC tables: `teams`, `roles`, `permissions`, `role_permission`, `role_hierarchy`, `model_roles`, `model_permissions`, `model_teams`, and `rbac_audit_log`.

### 4. (Optional) Seed Default Data

[](#4-optional-seed-default-data)

```
php artisan db:seed --class=Metrial\\RBAC\\Seeders\\RbacDefaultSeeder
```

This creates 4 default roles (`super-admin`, `admin`, `editor`, `viewer`) and 9 common permissions.

---

Quick Start
-----------

[](#quick-start)

```
