252 lines
7.7 KiB
PHP
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', 'کاربر با موفقیت حذف شد.');
|
|
//// }
|
|
////}
|