user()?->isAdmin(), 403); $users = User::query() ->with('character:id,user_id,name,city_id') ->orderByDesc('created_at') ->paginate(20); return view('admin.citizens.index', [ 'users' => $users, ]); } /** * Approve a pending citizen and ensure their character exists. */ public function approve(Request $request, User $user): RedirectResponse { abort_unless($request->user()?->isAdmin(), 403); $user->forceFill(['status' => User::STATUS_ACTIVE, 'is_active' => true])->save(); Character::ensureForUser($user); return redirect()->route('admin.citizens.index') ->with('status', __('admin.citizens.approved')); } /** * Ban a citizen so they can no longer authenticate. */ public function ban(Request $request, User $user): RedirectResponse { abort_unless($request->user()?->isAdmin(), 403); abort_if((int) $user->id === (int) $request->user()->id, 422, __('admin.citizens.cannot_ban_self')); $user->forceFill(['status' => User::STATUS_BANNED, 'is_active' => false])->save(); return redirect()->route('admin.citizens.index') ->with('status', __('admin.citizens.banned')); } }