authorize('viewAny', User::class); return Inertia::render('Users/Index', [ 'users' => User::with('service', 'roles')->orderBy('name')->paginate(20), 'services' => Service::all(), 'roles' => Role::all(), ]); } public function edit(User $user): Response { $this->authorize('update', $user); return Inertia::render('Users/Edit', [ 'user' => $user->load('service', 'roles'), 'services' => Service::all(), 'roles' => Role::all(), ]); } public function update(Request $request, User $user): RedirectResponse { $this->authorize('update', $user); $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email,' . $user->id, 'service_id' => 'nullable|exists:services,id', 'telephone' => 'nullable|string|max:20', 'role' => 'required|string|exists:roles,name', 'password' => 'nullable|string|min:8|confirmed', ]); $user->update([ 'name' => $validated['name'], 'email' => $validated['email'], 'service_id' => $validated['service_id'], 'telephone' => $validated['telephone'], ...(isset($validated['password']) ? ['password' => Hash::make($validated['password'])] : []), ]); $user->syncRoles([$validated['role']]); return redirect()->route('users.index') ->with('success', 'Utilisateur mis à jour.'); } public function toggleActive(User $user): RedirectResponse { $this->authorize('update', $user); $user->update(['active' => !$user->active]); return back()->with('success', 'Statut de l\'utilisateur mis à jour.'); } }