From 0f85123ea04dd1c7debdcb15d3367da2e959534e Mon Sep 17 00:00:00 2001 From: Admin Date: Wed, 19 Aug 2026 12:43:32 -0700 Subject: [PATCH] fix: complete admin permission --- .../Controllers/Admin/AdminController.php | 71 +++++++- .../Admin/Admins/adminEditRequest.php | 160 +++++++++++++----- .../Admin/Admins/adminStoreRequest.php | 25 ++- 3 files changed, 213 insertions(+), 43 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminController.php b/app/Http/Controllers/Admin/AdminController.php index f37de67..a7ccdd9 100644 --- a/app/Http/Controllers/Admin/AdminController.php +++ b/app/Http/Controllers/Admin/AdminController.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Admin\Admins\adminEditRequest; use App\Http\Requests\Admin\Admins\adminStoreRequest; use App\Models\Admin; +use App\Models\AdminPermission; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -70,9 +71,38 @@ class AdminController extends Controller try { DB::beginTransaction(); + $permissions = $inputs['permissions'] ?? []; + + unset($inputs['permissions']); + $inputs['password'] = Hash::make($inputs['password']); - Admin::create($inputs); + $admin = Admin::create($inputs); + + AdminPermission::create([ + 'admin_id' => $admin->id, + + 'flight_create' => $permissions['flight_create'] ?? 0, + 'flight_edit' => $permissions['flight_edit'] ?? 0, + 'flight_delete' => $permissions['flight_delete'] ?? 0, + + 'tour_create' => $permissions['tour_create'] ?? 0, + 'tour_edit' => $permissions['tour_edit'] ?? 0, + 'tour_delete' => $permissions['tour_delete'] ?? 0, + + 'booking_view' => $permissions['booking_view'] ?? 0, + 'booking_edit' => $permissions['booking_edit'] ?? 0, + 'booking_delete' => $permissions['booking_delete'] ?? 0, + + 'user_view' => $permissions['user_view'] ?? 0, + 'user_edit' => $permissions['user_edit'] ?? 0, + 'user_delete' => $permissions['user_delete'] ?? 0, + + 'admin_view' => $permissions['admin_view'] ?? 0, + 'admin_create' => $permissions['admin_create'] ?? 0, + 'admin_edit' => $permissions['admin_edit'] ?? 0, + 'admin_delete' => $permissions['admin_delete'] ?? 0, + ]); DB::commit(); @@ -92,7 +122,7 @@ class AdminController extends Controller return redirect() ->route('admin.admins.index') ->withErrors([ - 'success' => 'عملیات با موفقیت انجام شد' + 'success' => 'مدیر با موفقیت ایجاد شد' ]); } @@ -106,6 +136,8 @@ class AdminController extends Controller $inputs = $request->validated(); try { + + DB::beginTransaction(); if (!empty($inputs['password'])) { @@ -114,8 +146,40 @@ class AdminController extends Controller unset($inputs['password']); } + $permissions = $inputs['permissions'] ?? []; + unset($inputs['permissions']); + + $admin->update($inputs); + $permissionData = [ + 'flight_create' => $permissions['flight_create'] ?? 0, + 'flight_edit' => $permissions['flight_edit'] ?? 0, + 'flight_delete' => $permissions['flight_delete'] ?? 0, + + 'tour_create' => $permissions['tour_create'] ?? 0, + 'tour_edit' => $permissions['tour_edit'] ?? 0, + 'tour_delete' => $permissions['tour_delete'] ?? 0, + + 'booking_view' => $permissions['booking_view'] ?? 0, + 'booking_edit' => $permissions['booking_edit'] ?? 0, + 'booking_delete' => $permissions['booking_delete'] ?? 0, + + 'user_view' => $permissions['user_view'] ?? 0, + 'user_edit' => $permissions['user_edit'] ?? 0, + 'user_delete' => $permissions['user_delete'] ?? 0, + + 'admin_view' => $permissions['admin_view'] ?? 0, + 'admin_create' => $permissions['admin_create'] ?? 0, + 'admin_edit' => $permissions['admin_edit'] ?? 0, + 'admin_delete' => $permissions['admin_delete'] ?? 0, + ]; + + AdminPermission::updateOrCreate( + ['admin_id' => $admin->id], + $permissionData + ); + DB::commit(); } catch (\Exception $exception) { @@ -136,8 +200,11 @@ class AdminController extends Controller ->withErrors([ 'success' => 'عملیات با موفقیت انجام شد' ]); + + } + public function destroy(Admin $admin) { $admin->delete(); diff --git a/app/Http/Requests/Admin/Admins/adminEditRequest.php b/app/Http/Requests/Admin/Admins/adminEditRequest.php index ea1c3dd..6f2b3b1 100644 --- a/app/Http/Requests/Admin/Admins/adminEditRequest.php +++ b/app/Http/Requests/Admin/Admins/adminEditRequest.php @@ -24,45 +24,129 @@ class adminEditRequest extends FormRequest public function rules(): array { return [ - 'first_name' => [ - 'required', - 'min:2', - 'max:100', - ], - 'last_name' => [ - 'required', - 'min:3', - 'max:100', - ], - 'username' => [ - 'required', - 'min:4', - 'max:10', - Rule::unique('users', 'mobile')->ignore( - $this->route('admin')?->id ?? auth()->id() - ) - ], - 'email' => [ - 'required', - 'max:150', - 'email', - Rule::unique('users', 'mobile')->ignore( - $this->route('admin')?->id ?? auth()->id() - ) - ], - 'password' => [ - 'nullable', - 'min:6', + 'first_name' => [ + 'required', + 'min:2', + 'max:100', + ], + 'last_name' => [ + 'required', + 'min:3', + 'max:100', + ], + 'username' => [ + 'required', + 'min:4', + 'max:10', + Rule::unique('users', 'mobile')->ignore( + $this->route('admin')?->id ?? auth()->id() + ) + ], + 'email' => [ + 'required', + 'max:150', + 'email', + Rule::unique('users', 'mobile')->ignore( + $this->route('admin')?->id ?? auth()->id() + ) + ], + 'password' => [ + 'nullable', + 'min:6', - ], - 'image' => [ - 'nullable', - 'image', - ' mimes:jpg,jpeg,png,webp' - ], - 'status' => [ - 'required', - ] + ], + 'image' => [ + 'nullable', + 'image', + ' mimes:jpg,jpeg,png,webp' + ], + 'permissions' => [ + 'nullable', + 'array', + ], + + 'permissions.flight_create' => [ + 'nullable', + 'boolean', + ], + + 'permissions.flight_edit' => [ + 'nullable', + 'boolean', + ], + + 'permissions.flight_delete' => [ + 'nullable', + 'boolean', + ], + + 'permissions.tour_create' => [ + 'nullable', + 'boolean', + ], + + 'permissions.tour_edit' => [ + 'nullable', + 'boolean', + ], + + 'permissions.tour_delete' => [ + 'nullable', + 'boolean', + ], + + 'permissions.booking_view' => [ + 'nullable', + 'boolean', + ], + + 'permissions.booking_edit' => [ + 'nullable', + 'boolean', + ], + + 'permissions.booking_delete' => [ + 'nullable', + 'boolean', + ], + + 'permissions.user_view' => [ + 'nullable', + 'boolean', + ], + + 'permissions.user_edit' => [ + 'nullable', + 'boolean', + ], + + 'permissions.user_delete' => [ + 'nullable', + 'boolean', + ], + + 'permissions.admin_view' => [ + 'nullable', + 'boolean', + ], + + 'permissions.admin_create' => [ + 'nullable', + 'boolean', + ], + + 'permissions.admin_edit' => [ + 'nullable', + 'boolean', + ], + + 'permissions.admin_delete' => [ + 'nullable', + 'boolean', + ], + 'status' => [ + 'required', + ] ]; } } diff --git a/app/Http/Requests/Admin/Admins/adminStoreRequest.php b/app/Http/Requests/Admin/Admins/adminStoreRequest.php index fa03529..ce435e7 100644 --- a/app/Http/Requests/Admin/Admins/adminStoreRequest.php +++ b/app/Http/Requests/Admin/Admins/adminStoreRequest.php @@ -52,11 +52,30 @@ class adminStoreRequest extends FormRequest 'min:6', ], - 'image' => [ + 'permissions' => [ 'nullable', - 'image', - ' mimes:jpg,jpeg,png,webp' + 'array', ], + 'permissions.flight_create' => ['nullable', 'boolean'], + 'permissions.flight_edit' => ['nullable', 'boolean'], + 'permissions.flight_delete' => ['nullable', 'boolean'], + + 'permissions.tour_create' => ['nullable', 'boolean'], + 'permissions.tour_edit' => ['nullable', 'boolean'], + 'permissions.tour_delete' => ['nullable', 'boolean'], + + 'permissions.booking_view' => ['nullable', 'boolean'], + 'permissions.booking_edit' => ['nullable', 'boolean'], + 'permissions.booking_delete' => ['nullable', 'boolean'], + + 'permissions.user_view' => ['nullable', 'boolean'], + 'permissions.user_edit' => ['nullable', 'boolean'], + 'permissions.user_delete' => ['nullable', 'boolean'], + + 'permissions.admin_view' => ['nullable', 'boolean'], + 'permissions.admin_create' => ['nullable', 'boolean'], + 'permissions.admin_edit' => ['nullable', 'boolean'], + 'permissions.admin_delete' => ['nullable', 'boolean'], 'status' => [ 'required', ]