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(),