From 7107286c1a8a94abad5cb81a643dd8fcdf2e0a44 Mon Sep 17 00:00:00 2001 From: shahrzad011 Date: Mon, 17 Aug 2026 19:46:45 +0330 Subject: [PATCH] fix: update admin management controller --- .../Controllers/admin/AdminController.php | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/app/Http/Controllers/admin/AdminController.php b/app/Http/Controllers/admin/AdminController.php index d6f6230..9cb7933 100644 --- a/app/Http/Controllers/admin/AdminController.php +++ b/app/Http/Controllers/admin/AdminController.php @@ -4,16 +4,100 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; +use App\Http\Requests\AdminStoreRequest; +use App\Http\Requests\AdminUpdateRequest; use App\Models\Admin; +use App\Models\Permission; +use Illuminate\Support\Facades\Hash; class AdminController extends Controller { public function index() { $admins = Admin::query() + ->with('permissions') ->latest() ->paginate(10); return view('admin.admins.index', compact('admins')); } + + public function create() + { + $permissions = Permission::query() + ->orderBy('name') + ->get(); + + return view( + 'admin.admins.create', + compact('permissions') + ); + } + + public function store(AdminStoreRequest $request) + { + $data = $request->validated(); + + $permissions = $data['permissions'] ?? []; + + unset($data['permissions']); + + $data['password'] = Hash::make($data['password']); + + $admin = Admin::create($data); + + $admin->permissions()->sync($permissions); + + return redirect() + ->route('admin.admins.index') + ->with('success', 'مدیر با موفقیت ایجاد شد.'); + } + + public function edit(Admin $admin) + { + $permissions = Permission::query() + ->orderBy('name') + ->get(); + + $admin->load('permissions'); + + return view( + 'admin.admins.edit', + compact('admin', 'permissions') + ); + } + + public function update(AdminUpdateRequest $request, Admin $admin) + { + $data = $request->validated(); + + $permissions = $data['permissions'] ?? []; + + unset($data['permissions']); + + if (!empty($data['password'])) { + $data['password'] = Hash::make($data['password']); + } else { + unset($data['password']); + } + + $admin->update($data); + + $admin->permissions()->sync($permissions); + + return redirect() + ->route('admin.admins.index') + ->with('success', 'اطلاعات مدیر با موفقیت ویرایش شد.'); + } + + public function destroy(Admin $admin) + { + $admin->permissions()->detach(); + + $admin->delete(); + + return redirect() + ->route('admin.admins.index') + ->with('success', 'مدیر با موفقیت حذف شد.'); + } }