diff --git a/app/Http/Controllers/admin/UserController.php b/app/Http/Controllers/admin/UserController.php index c4174cd..b3e4eb4 100644 --- a/app/Http/Controllers/admin/UserController.php +++ b/app/Http/Controllers/admin/UserController.php @@ -1,45 +1,251 @@ paginate(15); + // چک دسترسی: فقط مدیرانی که مجوز «مشاهده کاربران» دارند + abort_unless(auth('admin')->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 show(User $user) - { - return view('admin.users.show', compact('user')); - } - public function edit(User $user) { + abort_unless(auth('admin')->user()->canManageUsers('edit'), 403); + return view('admin.users.edit', compact('user')); } - public function update(UserStoreRequest $request, User $user) + public function update(UserUpdateRequest $request, User $user) { - $user->update($request->validated()); + abort_unless(auth('admin')->user()->canManageUsers('edit'), 403); - return redirect() - ->route('admin.users.index') - ->with('success', 'کاربر با موفقیت بروزرسانی شد.'); + $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') + 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', 'کاربر با موفقیت حذف شد.'); +//// } +////} diff --git a/resources/views/admin/travel_types/create.blade.php b/resources/views/admin/travel_types/create.blade.php index f01dcdd..a70e316 100644 --- a/resources/views/admin/travel_types/create.blade.php +++ b/resources/views/admin/travel_types/create.blade.php @@ -1,3 +1,55 @@ -
| # | +عنوان | +اسلاگ | +وضعیت | +تاریخ ثبت | +عملیات | +
|---|---|---|---|---|---|
| {{ $loop->iteration }} | +{{ $type->title }} | +{{ $type->slug }} | ++ @if($type->status) + فعال + @else + غیرفعال + @endif + | + +{{ $type->created_at ? $type->created_at->toJalali()->format('Y/m/d H:i') : '-' }} | ++ ویرایش + + | +
| موردی یافت نشد. | +|||||