From 94ad59ce2465789f8170ad32109703884ab5f71c Mon Sep 17 00:00:00 2001 From: Mekan1206 Date: Sun, 21 Dec 2025 03:49:55 +0500 Subject: [PATCH] Enhance user role management and update Filament panel middleware - Added new user roles: operator, operator_card, operator_loan, client, and currency_maintainer in ShieldSeeder. - Included EnsureUserHasRole middleware in the Filament panel for improved access control. --- app/Http/Middleware/EnsureUserHasRole.php | 28 ++++++++++++++++++++ app/Providers/Filament/WorkPanelProvider.php | 4 ++- database/seeders/ShieldSeeder.php | 20 ++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 app/Http/Middleware/EnsureUserHasRole.php diff --git a/app/Http/Middleware/EnsureUserHasRole.php b/app/Http/Middleware/EnsureUserHasRole.php new file mode 100644 index 0000000..adebb51 --- /dev/null +++ b/app/Http/Middleware/EnsureUserHasRole.php @@ -0,0 +1,28 @@ +user(); + + if ($user->roles->count() == 0) { + $user->assignRole('client'); + } + + return $next($request); + } +} diff --git a/app/Providers/Filament/WorkPanelProvider.php b/app/Providers/Filament/WorkPanelProvider.php index 658a6d4..93ae88d 100644 --- a/app/Providers/Filament/WorkPanelProvider.php +++ b/app/Providers/Filament/WorkPanelProvider.php @@ -3,6 +3,7 @@ namespace App\Providers\Filament; use App\Http\Middleware\EnsureProfileIsFilled; +use App\Http\Middleware\EnsureUserHasRole; use App\Livewire\UserProfileFields; use App\Modules\BaseAuth\Middleware\RedirectIfUserPhoneIsUnVerfied; use BezhanSalleh\FilamentShield\FilamentShieldPlugin; @@ -73,11 +74,12 @@ class WorkPanelProvider extends PanelProvider UserProfileFields::class, ]), - // FilamentUpload::make(), + FilamentUpload::make(), ]) ->authMiddleware([ Authenticate::class, EnsureProfileIsFilled::class, + EnsureUserHasRole::class, ]) ->spa() ->databaseTransactions() diff --git a/database/seeders/ShieldSeeder.php b/database/seeders/ShieldSeeder.php index 64c5fd0..4655d19 100644 --- a/database/seeders/ShieldSeeder.php +++ b/database/seeders/ShieldSeeder.php @@ -35,6 +35,26 @@ class ShieldSeeder extends Seeder 'name' => 'admin', 'guard_name' => 'web', ], + [ + 'name' => 'operator', + 'guard_name' => 'web', + ], + [ + 'name' => 'operator_card', + 'guard_name' => 'web', + ], + [ + 'name' => 'operator_loan', + 'guard_name' => 'web', + ], + [ + 'name' => 'client', + 'guard_name' => 'web', + ], + [ + 'name' => 'currency_maintainer', + 'guard_name' => 'web', + ], ])->map(fn ($role) => [ ...$role, 'created_at' => now(),