madbox-99/filament-spatie-permissions
Composer 安装命令:
composer require 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.
关键字:
README 文档
README
A Filament v5 plugin for managing Spatie Laravel Permission roles and permissions — with enum-driven sync, a permission checkbox matrix, and an overview dashboard.
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 & permissions as PHP enums, sync to database with one click or artisan command
- Relation Managers — Drop-in
RolesRelationManagerandPermissionsRelationManagerfor 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
- PHP 8.3+
- Laravel 11+
- Filament 4.0+ / 5.0+
- Spatie Laravel Permission 6.0+
Installation
composer require madbox-99/filament-spatie-permissions
Setup
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
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
php artisan permissions:sync
Or use the Sync Permissions button on the Manage Permissions page in Filament.
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
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
Publish the config to customize defaults:
php artisan vendor:publish --tag=filament-spatie-permissions-config
Views
php artisan vendor:publish --tag=filament-spatie-permissions-views
Translations
php artisan vendor:publish --tag=filament-spatie-permissions-translations
Changelog
Please see CHANGELOG for more information on what has changed recently.
License
The MIT License (MIT). Please see License File for more information.
madbox-99/filament-spatie-permissions 适用场景与选型建议
madbox-99/filament-spatie-permissions 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 224 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 03 月 30 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「acl」 「laravel」 「roles」 「permissions」 「rbac」 「spatie」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 madbox-99/filament-spatie-permissions 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 madbox-99/filament-spatie-permissions 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 madbox-99/filament-spatie-permissions 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Laravel Multiauth package
This package provides a flexible way to add Role-based Permissions to Laravel 6.x
This package provides a flexible way to add Role-based Permissions to Laravel
AclManager plugin for CakePHP 3.x
Alfabank REST API integration
Smile Retailer Admin
统计信息
- 总下载量: 224
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 40
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-30