fix: enforce stock limits on basket quantities

No stock validation existed in the ordering flow, allowing customers
to order more items than available.

Cap quantity to ``stock_current`` in ``Baskets::getBasketData()`` when
adding to cart. Add ``min=1`` and ``max=stock`` attributes on the
basket quantity input, with JS clamping in the change handler.
Verify stock again in ``Shop\OrderController::store()`` before saving
the order as a race-condition safeguard.
This commit is contained in:
Valentin Lab
2026-02-20 12:17:22 +01:00
parent ef52addc7d
commit 63673117b3
6 changed files with 65 additions and 3 deletions

View File

@@ -53,7 +53,12 @@
$('.basket-quantity').change(function() {
var offer_id = $(this).data('id');
var quantity = $(this).val();
var quantity = parseInt($(this).val()) || 1;
var min = parseInt($(this).attr('min')) || 1;
var max = parseInt($(this).attr('max'));
if (quantity < min) quantity = min;
if (max && quantity > max) quantity = max;
$(this).val(quantity);
var $row = $(this).closest('.row');
updateBasket(offer_id, quantity, function() {
calculatePrice($row);