PHPackages                             madbox-99/filament-spatie-permissions - 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. madbox-99/filament-spatie-permissions

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

madbox-99/filament-spatie-permissions
=====================================

Filament v5 plugin for managing Spatie roles and permissions with enum-driven sync, CRUD resources, and a permission matrix overview.

v2.1.0(2mo ago)0216↓72.5%MITPHPPHP ^8.3CI passing

Since Mar 30Pushed 2mo agoCompare

[ Source](https://github.com/MadBox-99/filament-spatie-permissions)[ Packagist](https://packagist.org/packages/madbox-99/filament-spatie-permissions)[ Docs](https://github.com/MadBox-99/filament-spatie-permissions)[ RSS](/packages/madbox-99-filament-spatie-permissions/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (3)Dependencies (8)Versions (5)Used By (0)

Filament Spatie Permissions
===========================

[](#filament-spatie-permissions)

[![Latest Version on Packagist](https://camo.githubusercontent.com/b7ff7aa1371108eaa1f926c890597ed59a86a221675be98664ae592e5d8b6586/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6164626f782d39392f66696c616d656e742d7370617469652d7065726d697373696f6e732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/madbox-99/filament-spatie-permissions)[![Total Downloads](https://camo.githubusercontent.com/c19b399d397052bb23e6b470471678c04d42259d319030838e49ed4208563b60/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d6164626f782d39392f66696c616d656e742d7370617469652d7065726d697373696f6e732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/madbox-99/filament-spatie-permissions)[![License](https://camo.githubusercontent.com/a81c7ac2206b585f46d4a4f959aa6aa6ae30e93743d94a660da9c6a09ca40ca4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6d6164626f782d39392f66696c616d656e742d7370617469652d7065726d697373696f6e732e7376673f7374796c653d666c61742d737175617265)](LICENSE)

A **Filament v5** plugin for managing [Spatie Laravel Permission](https://github.com/spatie/laravel-permission) roles and permissions — with enum-driven sync, a permission checkbox matrix, and an overview dashboard.

Features
--------

[](#features)

- **Role Resource** — Full CRUD with a searchable, bulk-toggleable permission checkbox matrix
- **Permission Resource** — Filterable list with role badges
- **Manage Permissions Page** — Overview dashboard showing all roles, their permissions, and totals
- **Enum-driven Sync** — Define roles &amp; permissions as PHP enums, sync to database with one click or artisan command
- **Relation Managers** — Drop-in `RolesRelationManager` and `PermissionsRelationManager` for your User resource
- **Configurable Access** — Gate closure or automatic first-role detection
- **Multi-tenancy Ready** — Resources are excluded from tenant scoping (roles/permissions are global)
- **Translations** — Ships with English and Hungarian, fully publishable
- **Publishable** — Config, views, and translations can all be published and customized

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

[](#requirements)

- PHP 8.3+
- Laravel 11+
- Filament 4.0+ / 5.0+
- Spatie Laravel Permission 6.0+

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

[](#installation)

```
composer require madbox-99/filament-spatie-permissions
```

Setup
-----

[](#setup)

### 1. Register the plugin in your Panel Provider

[](#1-register-the-plugin-in-your-panel-provider)

```
use MadBox\FilamentSpatiePermissions\FilamentSpatiePermissionsPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugin(
            FilamentSpatiePermissionsPlugin::make()
                ->permissionEnum(\App\Enums\Permission::class)
                ->roleEnum(\App\Enums\Role::class)
                ->navigationGroup('System')
                ->canAccessUsing(fn ($user) => $user?->hasRole('Admin'))
        );
}
```

### 2. Implement the contracts on your enums

[](#2-implement-the-contracts-on-your-enums)

Your **Permission** enum must be a string-backed enum implementing `PermissionEnum`:

```
use MadBox\FilamentSpatiePermissions\Contracts\PermissionEnum;

enum Permission: string implements PermissionEnum
{
    case ViewAnyUser = 'view_any_user';
    case ViewUser = 'view_user';
    case CreateUser = 'create_user';
    // ...

    public static function values(): array
    {
        return array_map(fn (self $p) => $p->value, self::cases());
    }
}
```

Your **Role** enum must implement `RoleEnum` with a `permissions()` method:

```
use MadBox\FilamentSpatiePermissions\Contracts\RoleEnum;

enum Role: string implements RoleEnum
{
    case Admin = 'Admin';
    case Editor = 'Editor';
    case Viewer = 'Viewer';

    public function permissions(): array
    {
        return match ($this) {
            self::Admin => Permission::cases(),
            self::Editor => [
                Permission::ViewAnyUser,
                Permission::ViewUser,
                Permission::CreateUser,
            ],
            self::Viewer => [
                Permission::ViewAnyUser,
                Permission::ViewUser,
            ],
        };
    }
}
```

### 3. Sync permissions to the database

[](#3-sync-permissions-to-the-database)

```
php artisan permissions:sync
```

Or use the **Sync Permissions** button on the Manage Permissions page in Filament.

Relation Managers
-----------------

[](#relation-managers)

Add the relation managers to your User resource:

```
use MadBox\FilamentSpatiePermissions\RelationManagers\RolesRelationManager;
use MadBox\FilamentSpatiePermissions\RelationManagers\PermissionsRelationManager;

public static function getRelations(): array
{
    return [
        RolesRelationManager::class,
        PermissionsRelationManager::class,
    ];
}
```

These are only visible to users who pass the plugin's access check.

Configuration
-------------

[](#configuration)

### Plugin API (fluent)

[](#plugin-api-fluent)

```
FilamentSpatiePermissionsPlugin::make()
    ->permissionEnum(Permission::class)       // Permission enum class
    ->roleEnum(Role::class)                   // Role enum class
    ->canAccessUsing(fn ($user) => ...)       // Access gate closure
    ->navigationGroup('System')               // Sidebar group label
    ->navigationSort(2)                       // Sidebar sort order
    ->enableRoleResource(true)                // Toggle Role resource
    ->enablePermissionResource(true)          // Toggle Permission resource
    ->enableManagePermissionsPage(true)       // Toggle overview page
```

### Config file

[](#config-file)

Publish the config to customize defaults:

```
php artisan vendor:publish --tag=filament-spatie-permissions-config
```

### Views

[](#views)

```
php artisan vendor:publish --tag=filament-spatie-permissions-views
```

### Translations

[](#translations)

```
php artisan vendor:publish --tag=filament-spatie-permissions-translations
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE) for more information.

###  Health Score

43

—

FairBetter than 90% of packages

Maintenance86

Actively maintained with recent releases

Popularity15

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~5 days

Total

4

Last Release

74d ago

Major Versions

v1.0.0 → v2.0.02026-03-30

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/72586295?v=4)[Zoltán Tamás Szabó](/maintainers/MadBox-99)[@MadBox-99](https://github.com/MadBox-99)

---

Top Contributors

[![MadBox-99](https://avatars.githubusercontent.com/u/72586295?v=4)](https://github.com/MadBox-99 "MadBox-99 (7 commits)")

---

Tags

spatielaravelaclrolespermissionsrbacfilamentfilament-pluginlaravel-permissionmadbox

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/madbox-99-filament-spatie-permissions/health.svg)

```
[![Health](https://phpackages.com/badges/madbox-99-filament-spatie-permissions/health.svg)](https://phpackages.com/packages/madbox-99-filament-spatie-permissions)
```

###  Alternatives

[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k3.5M118](/packages/bezhansalleh-filament-shield)[spatie/laravel-permission

Permission handling for Laravel 12 and up

12.9k98.0M1.3k](/packages/spatie-laravel-permission)[chiiya/filament-access-control

Admin user, role and permission management for Laravel Filament

21851.1k](/packages/chiiya-filament-access-control)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
