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

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