Files
shahrzadzandi09/app/Http/Controllers/admin/UserController.php
T

252 lines
7.7 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\UserPasswordUpdateRequest;
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)
{
// چک دسترسی: فقط مدیرانی که مجوز «مشاهده کاربران» دارند
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 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', 'کاربر با موفقیت حذف شد.');
//// }
////}