middleware(['auth', 'verified', 'user.approved']); } public function index(): View { $this->authorize('viewAny', User::class); $users = User::query() ->select(['id', 'name', 'email', 'role', 'is_approved', 'created_at']) ->orderByDesc('created_at') ->paginate(15); $users->each(function ($user) { $user->tokens_used = $user->generations() ->where('status', 'completed') ->sum('tokens_used') ?? 0; $user->generations_count = $user->generations()->count(); }); return view('users.index', compact('users')); } public function edit(User $user): View { $this->authorize('update', $user); return view('users.edit', compact('user')); } public function update(Request $request, User $user): RedirectResponse { $this->authorize('update', $user); $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|max:255|unique:users,email,' . $user->id, 'role' => 'required|in:superadmin,user', 'is_approved' => 'required|boolean', 'password' => 'nullable|string|min:6|confirmed', ]); if (empty($validated['password'])) { unset($validated['password']); } $user->update($validated); return redirect()->route('users.index') ->with('success', 'Usuário atualizado com sucesso.'); } public function destroy(User $user): RedirectResponse { $this->authorize('delete', $user); if ($user->id === auth()->id()) { return redirect()->route('users.index') ->with('error', 'Você não pode excluir a si mesmo.'); } $user->delete(); return redirect()->route('users.index') ->with('success', 'Usuário excluído com sucesso.'); } }