has('status')) { match ($request->status) { 'pending' => $query->where('is_approved', false), 'approved' => $query->where('is_approved', true), 'paused' => $query->where('is_active', false), 'verified' => $query->whereNotNull('email_verified_at'), 'unverified' => $query->whereNull('email_verified_at'), default => null, }; } // Search by name or email if ($search = $request->input('search')) { $query->where(function ($q) use ($search) { $q->where('name', 'like', "%{$search}%") ->orWhere('email', 'like', "%{$search}%"); }); } $users = $query->orderByDesc('created_at')->paginate(20); // Stats $stats = [ 'total' => User::count(), 'pending' => User::where('is_approved', false)->count(), 'active' => User::where('is_active', true)->count(), 'paused' => User::where('is_active', false)->count(), 'unverified' => User::whereNull('email_verified_at')->count(), ]; return view('superadmin.users.index', compact('users', 'stats')); } /** * Approve a user account. */ public function approve(User $user): RedirectResponse { $user->update(['is_approved' => true]); return back()->with('success', __('User :name approved successfully.', ['name' => $user->name])); } /** * Reject/unapprove a user account. */ public function reject(User $user): RedirectResponse { $user->update(['is_approved' => false]); return back()->with('success', __('User :name rejected successfully.', ['name' => $user->name])); } /** * Toggle user active status (pause/activate). */ public function toggleActive(User $user): RedirectResponse { $user->update(['is_active' => !$user->is_active]); $status = $user->is_active ? __('activated') : __('paused'); return back()->with('success', __("User :name {$status}.", ['name' => $user->name])); } /** * Mark user email as verified without requiring email confirmation. */ public function verifyEmail(User $user): RedirectResponse { if ($user->hasVerifiedEmail()) { return back()->with('info', __('User :name email is already verified.', ['name' => $user->name])); } $user->markEmailAsVerified(); return back()->with('success', __('User :name email verified successfully.', ['name' => $user->name])); } /** * Show the edit form for a user. */ public function edit(User $user): View { return view('superadmin.users.edit', compact('user')); } /** * Update user details. */ public function update(Request $request, User $user): RedirectResponse { $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email,' . $user->id], 'role' => ['required', 'string', 'in:admin,superadmin'], 'token_limit' => ['nullable', 'integer', 'min:0'], 'password' => ['nullable', 'string', 'min:8', 'confirmed'], ]); $user->update([ 'name' => $validated['name'], 'email' => $validated['email'], 'token_limit' => $validated['token_limit'] !== null && $validated['token_limit'] !== '' ? (int) $validated['token_limit'] : null, ]); if (!empty($validated['password'])) { $user->update(['password' => Hash::make($validated['password'])]); } // Sync role $user->syncRoles([$validated['role']]); return redirect()->route('superadmin.users.index') ->with('success', __('User :name updated successfully.', ['name' => $user->name])); } /** * Delete a user account. */ public function destroy(User $user): RedirectResponse { $name = $user->name; $user->delete(); return back()->with('success', __('User :name deleted successfully.', ['name' => $name])); } }