From 50b3635e7ebcdc80f1a032db4144882937891b6e Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Fri, 9 Oct 2015 12:50:34 +1100 Subject: [PATCH] Locking line_items on API update --- .../spree/api/line_items_controller_decorator.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/controllers/spree/api/line_items_controller_decorator.rb b/app/controllers/spree/api/line_items_controller_decorator.rb index 5493c74043..1f6498cc86 100644 --- a/app/controllers/spree/api/line_items_controller_decorator.rb +++ b/app/controllers/spree/api/line_items_controller_decorator.rb @@ -1,9 +1,17 @@ Spree::Api::LineItemsController.class_eval do after_filter :apply_enterprise_fees, only: :update - + around_filter :lock, only: :update private + def lock + authorize! :read, order + @line_item = order.line_items.find(params[:id]) + @line_item.with_lock do + yield + end + end + def apply_enterprise_fees authorize! :read, order order.update_distribution_charge!