From e84496f8b1de49d33a7a0e41cbd937293ffde9c7 Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 30 May 2026 09:40:37 +0100 Subject: [PATCH] Fixed kit gate --- .../Kits/CheckoutKitController.php | 2 ++ app/Services/PredefinedKitCheckoutService.php | 21 +++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/Kits/CheckoutKitController.php b/app/Http/Controllers/Kits/CheckoutKitController.php index ddb14164d6..27da93404d 100644 --- a/app/Http/Controllers/Kits/CheckoutKitController.php +++ b/app/Http/Controllers/Kits/CheckoutKitController.php @@ -53,6 +53,8 @@ class CheckoutKitController extends Controller */ public function store(Request $request, $kit_id) { + $this->authorize('checkout', Asset::class); + $user_id = e($request->input('user_id')); if (is_null($user = User::find($user_id))) { return redirect()->back()->with('error', trans('admin/users/message.user_not_found')); diff --git a/app/Services/PredefinedKitCheckoutService.php b/app/Services/PredefinedKitCheckoutService.php index f1db8ca452..9a04d0aa4c 100644 --- a/app/Services/PredefinedKitCheckoutService.php +++ b/app/Services/PredefinedKitCheckoutService.php @@ -7,11 +7,11 @@ use App\Models\PredefinedKit; use App\Models\User; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; /** * Class incapsulates checkout logic for reuse in different controllers + * * @author [D. Minaev.] [] */ class PredefinedKitCheckoutService @@ -19,9 +19,9 @@ class PredefinedKitCheckoutService use AuthorizesRequests; /** - * @param Request $request, this function works with fields: checkout_at, expected_checkin, note - * @param PredefinedKit $kit kit for checkout - * @param User $user checkout target + * @param Request $request, this function works with fields: checkout_at, expected_checkin, note + * @param PredefinedKit $kit kit for checkout + * @param User $user checkout target * @return array Empty array if all ok, else [string_error1, string_error2...] */ public function checkout(Request $request, PredefinedKit $kit, User $user) @@ -93,7 +93,7 @@ class PredefinedKitCheckoutService } } if ($quantity > 0) { - $errors[] = trans('admin/kits/general.none_models', ['model'=> $model->name, 'qty' => $model->pivot->quantity]); + $errors[] = trans('admin/kits/general.none_models', ['model' => $model->name, 'qty' => $model->pivot->quantity]); } } @@ -107,9 +107,10 @@ class PredefinedKitCheckoutService ->with('freeSeats') ->get(); foreach ($licenses as $license) { + $this->authorize('checkout', $license); $quantity = $license->pivot->quantity; if ($quantity > count($license->freeSeats)) { - $errors[] = trans('admin/kits/general.none_licenses', ['license'=> $license->name, 'qty' => $license->pivot->quantity]); + $errors[] = trans('admin/kits/general.none_licenses', ['license' => $license->name, 'qty' => $license->pivot->quantity]); } for ($i = 0; $i < $quantity; $i++) { $seats_to_add[] = $license->freeSeats[$i]; @@ -123,8 +124,9 @@ class PredefinedKitCheckoutService { $consumables = $kit->consumables()->with('users')->get(); foreach ($consumables as $consumable) { + $this->authorize('checkout', $consumable); if ($consumable->numRemaining() < $consumable->pivot->quantity) { - $errors[] = trans('admin/kits/general.none_consumables', ['consumable'=> $consumable->name, 'qty' => $consumable->pivot->quantity]); + $errors[] = trans('admin/kits/general.none_consumables', ['consumable' => $consumable->name, 'qty' => $consumable->pivot->quantity]); } } @@ -135,8 +137,9 @@ class PredefinedKitCheckoutService { $accessories = $kit->accessories()->with('users')->get(); foreach ($accessories as $accessory) { + $this->authorize('checkout', $accessory); if ($accessory->numRemaining() < $accessory->pivot->quantity) { - $errors[] = trans('admin/kits/general.none_accessory', ['accessory'=> $accessory->name, 'qty' => $accessory->pivot->quantity]); + $errors[] = trans('admin/kits/general.none_accessory', ['accessory' => $accessory->name, 'qty' => $accessory->pivot->quantity]); } } @@ -175,7 +178,7 @@ class PredefinedKitCheckoutService ]); event(new CheckoutableCheckedOut($consumable, $user, $admin, $note)); } - //accessories + // accessories foreach ($accessories_to_add as $accessory) { $accessory->assigned_to = $user->id; $accessory->users()->attach($accessory->id, [