diff --git a/app/controllers/api/cart_controller.rb b/app/controllers/api/cart_controller.rb index a41cb6b4c..f26d97469 100644 --- a/app/controllers/api/cart_controller.rb +++ b/app/controllers/api/cart_controller.rb @@ -2,6 +2,8 @@ # API Controller for manage user's cart class API::CartController < API::ApiController + include API::OrderConcern + before_action :current_order, except: %i[create] before_action :ensure_order, except: %i[create] @@ -37,18 +39,6 @@ class API::CartController < API::ApiController private - def order_token - request.headers['X-Fablab-Order-Token'] || cart_params[:order_token] - end - - def current_order - @current_order = Order.find_by(token: order_token) - end - - def ensure_order - raise ActiveRecord::RecordNotFound if @current_order.nil? - end - def orderable Product.find(cart_params[:orderable_id]) end diff --git a/app/controllers/api/checkout_controller.rb b/app/controllers/api/checkout_controller.rb new file mode 100644 index 000000000..4c9425747 --- /dev/null +++ b/app/controllers/api/checkout_controller.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +# API Controller for cart checkout +class API::CheckoutController < API::ApiController + include ::API::OrderConcern +end diff --git a/app/controllers/concerns/api/order_concern.rb b/app/controllers/concerns/api/order_concern.rb new file mode 100644 index 000000000..eb38d42d0 --- /dev/null +++ b/app/controllers/concerns/api/order_concern.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# Concern for CartController and CheckoutController +module API::OrderConcern + private + + def order_token + request.headers['X-Fablab-Order-Token'] || cart_params[:order_token] + end + + def current_order + @current_order = Order.find_by(token: order_token) + end + + def ensure_order + raise ActiveRecord::RecordNotFound if @current_order.nil? + end +end