102 lines
3.2 KiB
PHP
102 lines
3.2 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('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', 'رمز عبور کاربر با موفقیت تغییر کرد.');
|
|
}
|
|
}
|