abdulrahim / filament-modular-permissions
Modular Roles and Permissions for Filament with easy publishing and syncing.
Package info
github.com/AbdulrahimAl-Ghazi/filament-modular-permissions
pkg:composer/abdulrahim/filament-modular-permissions
Requires
- php: ^8.1
- filament/filament: ^3.0|^4.0|^5.0
- spatie/laravel-permission: ^6.0|^7.0
README
A professional Laravel package for modular roles and permissions in Filament. Supporting multi-panel, auto-syncing, and Global Zero-Config Protection.
Features
- Global Zero-Config Shield: Protect and hide all resources and widgets automatically based on permissions.
- Smart Sync: Sync all resources and widgets with Spatie permissions in one command.
- Multi-panel Support: Publish and manage permissions for each panel independently.
- Super Admin Gate: Automatically grants all permissions to the
super_adminrole. - Interactive CLI: Select your target panel via an interactive CLI menu.
- User Management: Pre-configured User Resource with role management.
Installation
- Install the package via composer:
composer require abdulrahim/filament-modular-permissions
- Sync initial permissions:
php artisan permissions:sync
Important
You must run php artisan permissions:sync whenever you add a new Resource or Widget to your Filament project to ensure its permissions are registered in the database.
- Publish Resources:
# To manage Roles and Permissions php artisan permissions:publish-resources # To manage Users and assign Roles to them php artisan permissions:publish-user-resource
Initial User (Seeding)
To create your first Super Admin user, add this to your DatabaseSeeder.php:
use App\Models\User; use Spatie\Permission\Models\Role; public function run(): void { // Ensure the super_admin role exists for the web guard Role::firstOrCreate(['name' => 'super_admin', 'guard_name' => 'web']); $admin = User::firstOrCreate( ['email' => 'admin@admin.com'], [ 'name' => 'Admin', 'password' => bcrypt('12345678'), ] ); $admin->assignRole('super_admin'); }
Advanced Concepts
1. Multi-Guard Architecture
The package handles multi-panel environments where each panel might use a different Auth Guard. It automatically detects and uses the correct guard for syncing and checking permissions.
2. Intelligent Super Admin
The super_admin role is a master role. The package registers a global Gate::before check that grants full access to anyone with this role (guard-aware).
Manual Control (Optional)
Disable the global shield in config/filament-modular-permissions.php:
'auto_hide_resources' => false,
Then use the traits manually:
use HandlesResourcePermissions; or use HandlesWidgetPermissions;
Contact
Email: abaad.dev8@gmail.com
Website: abaad.dev
نظام الصلاحيات والأدوار الموديولر لـ Filament
مكتبة احترافية لإدارة الأدوار والصلاحيات في Filament تعتمد على المبدأ الموديولر، مع دعم كامل لتعدد لوحات التحكم والحماية الشاملة التلقائية.
المميزات الرئيسية
- الحماية الشاملة التلقائية: حماية المسارات وإخفاء الموارد من القائمة الجانبية تلقائياً بمجرد التثبيت.
- نظام مزامنة ذكي: أمر واحد لمزامنة جميع الموارد والويدجت مع نظام Spatie.
- دعم تعدد اللوحات: إدارة الصلاحيات لكل لوحة تحكم بشكل مستقل تماماً عبر أوامر تفاعلية.
- السوبر أدمن: نظام Gate يعطي كافة الصلاحيات لدور
super_adminتلقائياً. - إدارة المستخدمين: مورد إدارة مستخدمين جاهز مع إمكانية ربط الأدوار والترجمة الكاملة.
التثبيت
- تحميل المكتبة:
composer require abdulrahim/filament-modular-permissions
- مزامنة الصلاحيات:
php artisan permissions:sync
Important
يجب عليك تنفيذ أمر php artisan permissions:sync في كل مرة تقوم فيها بإضافة مورد (Resource) أو ويدجت (Widget) جديد لمشروعك، لضمان تسجيل صلاحياته في قاعدة البيانات.
- نشر واجهات الإدارة:
# لنشر واجهة إدارة الأدوار والصلاحيات (RoleResource) php artisan permissions:publish-resources # لنشر واجهة إدارة المستخدمين وربطهم بالأدوار (UserResource) php artisan permissions:publish-user-resource
إنشاء المستخدم الأول (Seeding)
لإنشاء أول مستخدم بصلاحيات المدير العام (Super Admin)، أضف الكود التالي في ملف DatabaseSeeder.php:
use App\Models\User; use Spatie\Permission\Models\Role; public function run(): void { // التأكد من وجود دور السوبر أدمن للحارس الافتراضي Role::firstOrCreate(['name' => 'super_admin', 'guard_name' => 'web']); $admin = User::firstOrCreate( ['email' => 'admin@admin.com'], [ 'name' => 'Admin', 'password' => bcrypt('12345678'), ] ); $admin->assignRole('super_admin'); }
مفاهيم متقدمة
1. معمارية الحراس المتعددة (Multi-Guard)
تتعامل المكتبة بذكاء مع اللوحات التي تستخدم حراس أمان مختلفة، وتفصل بين صلاحيات كل حارس تلقائياً.
2. السوبر أدمن الذكي (Intelligent Super Admin)
بمجرد إعطاء دور super_admin للمستخدم، فإنه سيحصل على وصول كامل لكافة الأقسام تلقائياً عبر نظام Gate::before.
التحكم اليدوي (اختياري)
قم بتعطيل الحماية الشاملة في ملف الإعدادات:
'auto_hide_resources' => false,
ثم استخدم الـ Traits يدوياً:
use HandlesResourcePermissions; أو use HandlesWidgetPermissions;
التواصل
البريد الإلكتروني: abaad.dev8@gmail.com
الموقع الإلكتروني: abaad.dev
License
MIT License.