diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 7d90f3f..b330dde 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -20,7 +20,7 @@ class DashboardController extends Controller return $this->adminDashboard(); } - if ($user->hasRole('RH')) { + if ($user->can('validate rh')) { return $this->rhDashboard(); } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index e883db9..9b0f877 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -50,7 +50,10 @@ class UserController extends Controller implements \Illuminate\Routing\Controlle ]); if (isset($validated['roles'])) { + setPermissionsTeamId($user->structure_id); $user->syncRoles($validated['roles']); + // Restaurer le contexte actuel après + setPermissionsTeamId(config('tenant.structure_id')); } return redirect()->route('users.index')->with('success', 'Utilisateur créé avec succès.'); @@ -85,9 +88,10 @@ class UserController extends Controller implements \Illuminate\Routing\Controlle } if (isset($validated['roles'])) { - // Prevent removing own admin role if it's the only one left? - // For simplicity, just allow sync. + setPermissionsTeamId($user->structure_id); $user->syncRoles($validated['roles']); + // Restaurer le contexte actuel après + setPermissionsTeamId(config('tenant.structure_id')); } return redirect()->route('users.index')->with('success', 'Utilisateur mis à jour.'); diff --git a/app/Policies/IntegrationRequestPolicy.php b/app/Policies/IntegrationRequestPolicy.php index cb4fdd0..c31c9a5 100644 --- a/app/Policies/IntegrationRequestPolicy.php +++ b/app/Policies/IntegrationRequestPolicy.php @@ -13,7 +13,7 @@ class IntegrationRequestPolicy */ public function viewAny(User $user): bool { - return $user->hasAnyRole(['Admin', 'RH', 'DSI', 'Batiment', 'Parc Auto']); + return $user->hasRole('Admin') || $user->can('view dashboard'); } /** @@ -21,7 +21,7 @@ class IntegrationRequestPolicy */ public function view(User $user, IntegrationRequest $integrationRequest): bool { - if ($user->hasRole('Admin') || $user->hasRole('RH')) { + if ($user->hasRole('Admin') || $user->can('validate rh')) { return true; } @@ -36,7 +36,7 @@ class IntegrationRequestPolicy */ public function create(User $user): bool { - return $user->hasAnyRole(['Admin', 'RH', 'Prescripteur', 'DSI', 'Batiment', 'Parc Auto']); + return $user->hasRole('Admin') || $user->can('create integration'); } /** @@ -44,7 +44,7 @@ class IntegrationRequestPolicy */ public function update(User $user, IntegrationRequest $integrationRequest): bool { - return $user->hasAnyRole(['Admin', 'RH']); + return $user->hasRole('Admin') || $user->can('validate rh'); } /** diff --git a/app/Services/IntegrationService.php b/app/Services/IntegrationService.php index 0171897..fef07dc 100644 --- a/app/Services/IntegrationService.php +++ b/app/Services/IntegrationService.php @@ -48,7 +48,7 @@ class IntegrationService ]); // Notify RH users about the new request - $rhUsers = \App\Models\User::role('RH')->get(); + $rhUsers = \App\Models\User::permission(['validate rh', 'create integration'])->get(); \Illuminate\Support\Facades\Notification::send($rhUsers, new \App\Notifications\NewIntegrationRequestNotification($request)); return $request; @@ -110,7 +110,7 @@ class IntegrationService $request->agent->update(['integration_status' => IntegrationStatus::Completed]); // Notify RH (Standard notification) - $rhUsers = \App\Models\User::role('RH')->get(); + $rhUsers = \App\Models\User::permission('validate rh')->get(); \Illuminate\Support\Facades\Notification::send($rhUsers, new \App\Notifications\ProcessCompletedNotification($request)); // Generate PDF for Prescriber and DSI diff --git a/app/Services/ServiceTaskManager.php b/app/Services/ServiceTaskManager.php index f756e59..4faa383 100644 --- a/app/Services/ServiceTaskManager.php +++ b/app/Services/ServiceTaskManager.php @@ -56,7 +56,7 @@ class ServiceTaskManager ]); // Notify RH that a service has completed their task - $rhUsers = \App\Models\User::role('RH')->get(); + $rhUsers = \App\Models\User::permission('validate rh')->get(); \Illuminate\Support\Facades\Notification::send($rhUsers, new \App\Notifications\ServiceTaskValidatedNotification($task)); // Trigger check on the parent integration request