user()->canManageUsers('view'), 403); $query = User::query(); // جستجوی کلی: نام / ایمیل / موبایل if ($request->filled('search')) { $query->where(function ($q) use ($request) { $q->where('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', 'رمز عبور کاربر با موفقیت تغییر کرد.'); } } // // //namespace App\Http\Controllers\Admin; // //use App\Http\Controllers\Controller; //use App\Http\Requests\UserPasswordUpdateRequest; //use Illuminate\Foundation\Auth\Access\AuthorizesRequests; //use App\Http\Requests\UserUpdateRequest; //use App\Models\User; //use Illuminate\Http\Request; //use Illuminate\Support\Facades\Hash; // //class UserController extends Controller //{ // // /** // * لیست + جستجوی چندپارامتری // */ // public function index(Request $request) // { // // چک دسترسی: فقط مدیرانی که مجوز «مشاهده کاربران» دارند // $this->authorize('users.view'); // // $query = User::query(); // // // جستجوی کلی: نام / ایمیل / موبایل // if ($request->filled('search')) { // $query->where(function ($q) use ($request) { // $q->where('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) // { // $this->authorize('users.edit'); // // return view('admin.users.edit', compact('user')); // } // // public function update(UserUpdateRequest $request, User $user) // { // $data = $request->validated(); // // // اگر رمز خالی بود تغییرش نده (گزینه‌ای) // unset($data['password']); // // $user->update($data); // // return redirect()->route('admin.users.index') // ->with('success', 'اطلاعات کاربر با موفقیت ویرایش شد.'); // } // // // public function destroy(User $user) // { // $this->authorize('users.delete'); // // $user->delete(); // // return redirect()->route('admin.users.index') // ->with('success', 'کاربر با موفقیت حذف شد.'); // } // // public function changePassword(User $user) // { // $this->authorize('users.change-password'); // // return view('admin.users.change-password', compact('user')); // } // // public function updatePassword(UserPasswordUpdateRequest $request, User $user) // { // $user->update([ // 'password' => Hash::make($request->password), // ]); // // return redirect()->route('admin.users.index') // ->with('success', 'رمز عبور کاربر با موفقیت تغییر کرد.'); // } //} // //// ////namespace App\Http\Controllers\Admin; //// ////use App\Http\Controllers\Controller; ////use App\Http\Requests\UserStoreRequest; ////use App\Models\User; //// ////class UserController extends Controller ////{ //// public function index() //// { //// $users = User::latest()->paginate(15); //// //// return view('admin.users.index', compact('users')); //// } //// //// public function show(User $user) //// { //// return view('admin.users.show', compact('user')); //// } //// //// public function edit(User $user) //// { //// return view('admin.users.edit', compact('user')); //// } //// //// public function update(UserStoreRequest $request, User $user) //// { //// $user->update($request->validated()); //// //// return redirect() //// ->route('admin.users.index') //// ->with('success', 'کاربر با موفقیت بروزرسانی شد.'); //// } //// //// public function destroy(User $user) //// { //// $user->delete(); //// //// return redirect() //// ->route('admin.users.index') //// ->with('success', 'کاربر با موفقیت حذف شد.'); //// } ////}