user()->canManageUsers('view'), 403); $query = User::query(); // جستجوی کلی: نام / ایمیل / موبایل if ($request->filled('search')) { $query->where(function ($q) use ($request) { $q->where('first_name', 'like', '%' . $request->search . '%') ->orWhere('email', 'like', '%' . $request->search . '%') ->orWhere('mobile', 'like', '%' . $request->search . '%'); }); } // فیلتر وضعیت if ($request->filled('status')) { $query->where('status', $request->status); } // فیلتر تاریخ عضویت if ($request->filled('from_date')) { $query->whereDate('created_at', '>=', $request->from_date); } if ($request->filled('to_date')) { $query->whereDate('created_at', '<=', $request->to_date); } // withQueryString => فیلترها هنگام صفحه‌بندی حفظ می‌شوند $users = $query->latest()->paginate(10)->withQueryString(); return view('admin.users.index', compact('users')); } public function edit(User $user) { abort_unless(auth('admin')->user()->canManageUsers('edit'), 403); return view('admin.users.edit', compact('user')); } public function update(UserUpdateRequest $request, User $user) { // abort_unless(auth('admin')->user()->canManageUsers('edit'), 403); $data = $request->validated(); // اگر رمز خالی بود تغییرش نده (گزینه‌ای) unset($data['password']); $user->update($data); return redirect()->route('admin.users.index') ->with('success', 'اطلاعات کاربر با موفقیت ویرایش شد.'); } public function destroy(User $user) { abort_unless(auth('admin')->user()->canManageUsers('delete'), 403); $user->delete(); return redirect()->route('admin.users.index') ->with('success', 'کاربر با موفقیت حذف شد.'); } public function changePassword(User $user) { // abort_unless(auth('admin')->user()->canManageUsers('password'), 403); return view('admin.users.change-password', compact('user')); } public function updatePassword(UserPasswordUpdateRequest $request, User $user) { // abort_unless(auth('admin')->user()->canManageUsers('password'), 403); $user->update([ 'password' => Hash::make($request->password), ]); return redirect()->route('admin.users.index') ->with('success', 'رمز عبور کاربر با موفقیت تغییر کرد.'); } }