solidus_api 2.9.6 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +35 -2
  3. data/app/controllers/spree/api/addresses_controller.rb +2 -2
  4. data/app/controllers/spree/api/base_controller.rb +21 -13
  5. data/app/controllers/spree/api/checkouts_controller.rb +1 -11
  6. data/app/controllers/spree/api/countries_controller.rb +2 -2
  7. data/app/controllers/spree/api/credit_cards_controller.rb +3 -3
  8. data/app/controllers/spree/api/customer_returns_controller.rb +67 -0
  9. data/app/controllers/spree/api/images_controller.rb +5 -5
  10. data/app/controllers/spree/api/inventory_units_controller.rb +2 -2
  11. data/app/controllers/spree/api/option_types_controller.rb +4 -4
  12. data/app/controllers/spree/api/option_values_controller.rb +3 -3
  13. data/app/controllers/spree/api/orders_controller.rb +11 -6
  14. data/app/controllers/spree/api/payments_controller.rb +2 -2
  15. data/app/controllers/spree/api/product_properties_controller.rb +9 -14
  16. data/app/controllers/spree/api/promotions_controller.rb +3 -12
  17. data/app/controllers/spree/api/properties_controller.rb +4 -4
  18. data/app/controllers/spree/api/resource_controller.rb +3 -3
  19. data/app/controllers/spree/api/return_authorizations_controller.rb +4 -4
  20. data/app/controllers/spree/api/shipments_controller.rb +2 -2
  21. data/app/controllers/spree/api/states_controller.rb +3 -3
  22. data/app/controllers/spree/api/stock_items_controller.rb +3 -3
  23. data/app/controllers/spree/api/stock_locations_controller.rb +4 -4
  24. data/app/controllers/spree/api/stock_movements_controller.rb +3 -3
  25. data/app/controllers/spree/api/stores_controller.rb +4 -4
  26. data/app/controllers/spree/api/taxonomies_controller.rb +5 -3
  27. data/app/controllers/spree/api/taxons_controller.rb +5 -5
  28. data/app/controllers/spree/api/users_controller.rb +13 -0
  29. data/app/controllers/spree/api/variants_controller.rb +4 -4
  30. data/app/controllers/spree/api/zones_controller.rb +3 -3
  31. data/app/helpers/spree/api/api_helpers.rb +20 -7
  32. data/app/views/spree/api/customer_returns/index.json.jbuilder +6 -0
  33. data/app/views/spree/api/customer_returns/new.json.jbuilder +4 -0
  34. data/app/views/spree/api/customer_returns/show.json.jbuilder +3 -0
  35. data/app/views/spree/api/errors/could_not_transition.json.jbuilder +4 -0
  36. data/app/views/spree/api/images/_image.json.jbuilder +2 -2
  37. data/app/views/spree/api/orders/_order.json.jbuilder +1 -1
  38. data/app/views/spree/api/orders/could_not_transition.json.jbuilder +5 -0
  39. data/app/views/spree/api/shared/_pagination.json.jbuilder +1 -1
  40. data/config/locales/en.yml +2 -0
  41. data/config/routes.rb +6 -3
  42. data/lib/spree/api.rb +0 -7
  43. data/lib/spree/api/config.rb +9 -0
  44. data/lib/spree/api/engine.rb +4 -4
  45. data/lib/spree/api/responders.rb +3 -2
  46. data/lib/spree/api/responders/{rabl_template.rb → jbuilder_template.rb} +3 -1
  47. data/lib/spree/api/testing_support/helpers.rb +1 -1
  48. data/{app/models → lib}/spree/api_configuration.rb +0 -0
  49. data/openapi/.stoplight.yml +7 -0
  50. data/openapi/authentication.md +33 -0
  51. data/openapi/checkout-flow.md +63 -0
  52. data/openapi/errors.md +3 -0
  53. data/openapi/lint.yml +1 -0
  54. data/openapi/main.hub.yml +65 -0
  55. data/openapi/pagination.md +7 -0
  56. data/openapi/solidus-api.oas.yml +6753 -0
  57. data/openapi/theme.css +0 -0
  58. data/solidus_api.gemspec +19 -19
  59. metadata +27 -115
  60. data/script/rails +0 -10
  61. data/spec/controllers/spree/api/base_controller_spec.rb +0 -118
  62. data/spec/controllers/spree/api/resource_controller_spec.rb +0 -190
  63. data/spec/features/checkout_spec.rb +0 -192
  64. data/spec/fixtures/thinking-cat.jpg +0 -0
  65. data/spec/models/spree/legacy_user_spec.rb +0 -103
  66. data/spec/requests/api/address_books_spec.rb +0 -240
  67. data/spec/requests/rabl_cache_spec.rb +0 -34
  68. data/spec/requests/ransackable_attributes_spec.rb +0 -79
  69. data/spec/requests/spree/api/addresses_controller_spec.rb +0 -57
  70. data/spec/requests/spree/api/checkouts_controller_spec.rb +0 -484
  71. data/spec/requests/spree/api/classifications_controller_spec.rb +0 -50
  72. data/spec/requests/spree/api/config_controller_spec.rb +0 -26
  73. data/spec/requests/spree/api/countries_controller_spec.rb +0 -48
  74. data/spec/requests/spree/api/coupon_codes_controller_spec.rb +0 -105
  75. data/spec/requests/spree/api/credit_cards_controller_spec.rb +0 -105
  76. data/spec/requests/spree/api/images_controller_spec.rb +0 -99
  77. data/spec/requests/spree/api/inventory_units_controller_spec.rb +0 -55
  78. data/spec/requests/spree/api/line_items_controller_spec.rb +0 -213
  79. data/spec/requests/spree/api/option_types_controller_spec.rb +0 -116
  80. data/spec/requests/spree/api/option_values_controller_spec.rb +0 -138
  81. data/spec/requests/spree/api/orders_controller_spec.rb +0 -954
  82. data/spec/requests/spree/api/payments_controller_spec.rb +0 -259
  83. data/spec/requests/spree/api/product_properties_controller_spec.rb +0 -114
  84. data/spec/requests/spree/api/products_controller_spec.rb +0 -422
  85. data/spec/requests/spree/api/promotion_application_spec.rb +0 -50
  86. data/spec/requests/spree/api/promotions_controller_spec.rb +0 -67
  87. data/spec/requests/spree/api/properties_controller_spec.rb +0 -102
  88. data/spec/requests/spree/api/return_authorizations_controller_spec.rb +0 -180
  89. data/spec/requests/spree/api/shipments_controller_spec.rb +0 -532
  90. data/spec/requests/spree/api/states_controller_spec.rb +0 -69
  91. data/spec/requests/spree/api/stock_items_controller_spec.rb +0 -311
  92. data/spec/requests/spree/api/stock_locations_controller_spec.rb +0 -170
  93. data/spec/requests/spree/api/stock_movements_controller_spec.rb +0 -81
  94. data/spec/requests/spree/api/store_credit_events_controller_spec.rb +0 -59
  95. data/spec/requests/spree/api/stores_controller_spec.rb +0 -134
  96. data/spec/requests/spree/api/taxonomies_controller_spec.rb +0 -114
  97. data/spec/requests/spree/api/taxons_controller_spec.rb +0 -217
  98. data/spec/requests/spree/api/unauthenticated_products_controller_spec.rb +0 -27
  99. data/spec/requests/spree/api/users_controller_spec.rb +0 -151
  100. data/spec/requests/spree/api/variants_controller_spec.rb +0 -340
  101. data/spec/requests/spree/api/zones_controller_spec.rb +0 -89
  102. data/spec/shared_examples/protect_product_actions.rb +0 -18
  103. data/spec/spec_helper.rb +0 -73
  104. data/spec/support/be_paginated_matcher.rb +0 -9
  105. data/spec/support/controller_hacks.rb +0 -43
  106. data/spec/support/database_cleaner.rb +0 -16
  107. data/spec/support/have_attributes_matcher.rb +0 -11
  108. data/spec/test_views/spree/api/widgets/_widget.json.jbuilder +0 -3
  109. data/spec/test_views/spree/api/widgets/index.json.jbuilder +0 -9
  110. data/spec/test_views/spree/api/widgets/new.json.jbuilder +0 -3
  111. data/spec/test_views/spree/api/widgets/show.json.jbuilder +0 -3
@@ -53,12 +53,11 @@ module Spree
53
53
  end
54
54
 
55
55
  def index
56
- authorize! :index, Order
56
+ authorize! :admin, Order
57
57
  orders_includes = [
58
- :user,
59
- :payments,
60
- :adjustments,
61
- :line_items
58
+ { user: :store_credits },
59
+ :line_items,
60
+ :valid_store_credit_payments
62
61
  ]
63
62
  @orders = paginate(
64
63
  Spree::Order
@@ -174,7 +173,13 @@ module Spree
174
173
  end
175
174
 
176
175
  def find_order(_lock = false)
177
- @order = Spree::Order.find_by!(number: params[:id])
176
+ @order = Spree::Order.
177
+ includes(line_items: [:adjustments, { variant: :images }],
178
+ payments: :payment_method,
179
+ shipments: {
180
+ shipping_rates: { shipping_method: :zones, taxes: :tax_rate }
181
+ }).
182
+ find_by!(number: params[:id])
178
183
  end
179
184
 
180
185
  def order_id
@@ -31,7 +31,7 @@ module Spree
31
31
  authorize! params[:action], @payment
32
32
  if !@payment.pending?
33
33
  render 'update_forbidden', status: 403
34
- elsif @payment.update_attributes(payment_params)
34
+ elsif @payment.update(payment_params)
35
35
  respond_with(@payment, default_template: :show)
36
36
  else
37
37
  invalid_resource!(@payment)
@@ -62,7 +62,7 @@ module Spree
62
62
 
63
63
  def find_order
64
64
  @order = Spree::Order.find_by(number: order_id)
65
- authorize! :read, @order, order_token
65
+ authorize! :show, @order, order_token
66
66
  end
67
67
 
68
68
  def find_payment
@@ -9,7 +9,7 @@ module Spree
9
9
  def index
10
10
  @product_properties = @product.
11
11
  product_properties.
12
- accessible_by(current_ability, :read).
12
+ accessible_by(current_ability).
13
13
  ransack(params[:q]).
14
14
  result
15
15
 
@@ -36,9 +36,8 @@ module Spree
36
36
  end
37
37
 
38
38
  def update
39
- if @product_property
40
- authorize! :update, @product_property
41
- @product_property.update_attributes(product_property_params)
39
+ authorize! :update, @product_property
40
+ if @product_property.update(product_property_params)
42
41
  respond_with(@product_property, status: 200, default_template: :show)
43
42
  else
44
43
  invalid_resource!(@product_property)
@@ -46,27 +45,23 @@ module Spree
46
45
  end
47
46
 
48
47
  def destroy
49
- if @product_property
50
- authorize! :destroy, @product_property
51
- @product_property.destroy
52
- respond_with(@product_property, status: 204)
53
- else
54
- invalid_resource!(@product_property)
55
- end
48
+ authorize! :destroy, @product_property
49
+ @product_property.destroy
50
+ respond_with(@product_property, status: 204)
56
51
  end
57
52
 
58
53
  private
59
54
 
60
55
  def find_product
61
56
  @product = super(params[:product_id])
62
- authorize! :read, @product
57
+ authorize! :show, @product
63
58
  end
64
59
 
65
60
  def product_property
66
61
  if @product
67
62
  @product_property ||= @product.product_properties.find_by(id: params[:id])
68
- @product_property ||= @product.product_properties.includes(:property).where(spree_properties: { name: params[:id] }).first
69
- authorize! :read, @product_property
63
+ @product_property ||= @product.product_properties.includes(:property).where(spree_properties: { name: params[:id] }).first!
64
+ authorize! :show, @product_property
70
65
  end
71
66
  end
72
67
 
@@ -3,26 +3,17 @@
3
3
  module Spree
4
4
  module Api
5
5
  class PromotionsController < Spree::Api::BaseController
6
- before_action :requires_admin
7
6
  before_action :load_promotion
8
7
 
9
8
  def show
10
- if @promotion
11
- respond_with(@promotion, default_template: :show)
12
- else
13
- raise ActiveRecord::RecordNotFound
14
- end
9
+ authorize! :show, @promotion
10
+ respond_with(@promotion, default_template: :show)
15
11
  end
16
12
 
17
13
  private
18
14
 
19
- def requires_admin
20
- return if @current_user_roles.include?("admin")
21
- unauthorized && return
22
- end
23
-
24
15
  def load_promotion
25
- @promotion = Spree::Promotion.find_by(id: params[:id]) || Spree::Promotion.with_coupon_code(params[:id])
16
+ @promotion = Spree::Promotion.with_coupon_code(params[:id]) || Spree::Promotion.find(params[:id])
26
17
  end
27
18
  end
28
19
  end
@@ -6,7 +6,7 @@ module Spree
6
6
  before_action :find_property, only: [:show, :update, :destroy]
7
7
 
8
8
  def index
9
- @properties = Spree::Property.accessible_by(current_ability, :read)
9
+ @properties = Spree::Property.accessible_by(current_ability)
10
10
 
11
11
  if params[:ids]
12
12
  ids = params[:ids].split(",").flatten
@@ -39,7 +39,7 @@ module Spree
39
39
  def update
40
40
  if @property
41
41
  authorize! :update, @property
42
- @property.update_attributes(property_params)
42
+ @property.update(property_params)
43
43
  respond_with(@property, status: 200, default_template: :show)
44
44
  else
45
45
  invalid_resource!(@property)
@@ -59,9 +59,9 @@ module Spree
59
59
  private
60
60
 
61
61
  def find_property
62
- @property = Spree::Property.accessible_by(current_ability, :read).find(params[:id])
62
+ @property = Spree::Property.accessible_by(current_ability, :show).find(params[:id])
63
63
  rescue ActiveRecord::RecordNotFound
64
- @property = Spree::Property.accessible_by(current_ability, :read).find_by!(name: params[:id])
64
+ @property = Spree::Property.accessible_by(current_ability, :show).find_by!(name: params[:id])
65
65
  end
66
66
 
67
67
  def property_params
@@ -4,7 +4,7 @@ class Spree::Api::ResourceController < Spree::Api::BaseController
4
4
  before_action :load_resource, only: [:show, :update, :destroy]
5
5
 
6
6
  def index
7
- collection_scope = model_class.accessible_by(current_ability, :read)
7
+ collection_scope = model_class.accessible_by(current_ability)
8
8
  if params[:ids]
9
9
  ids = params[:ids].split(",").flatten
10
10
  collection_scope = collection_scope.where(id: ids)
@@ -43,7 +43,7 @@ class Spree::Api::ResourceController < Spree::Api::BaseController
43
43
  def update
44
44
  authorize! :update, @object
45
45
 
46
- if @object.update_attributes(permitted_resource_params)
46
+ if @object.update(permitted_resource_params)
47
47
  respond_with(@object, status: 200, default_template: :show)
48
48
  else
49
49
  invalid_resource!(@object)
@@ -65,7 +65,7 @@ class Spree::Api::ResourceController < Spree::Api::BaseController
65
65
  protected
66
66
 
67
67
  def load_resource
68
- @object = model_class.accessible_by(current_ability, :read).find(params[:id])
68
+ @object = model_class.accessible_by(current_ability, :show).find(params[:id])
69
69
  instance_variable_set("@#{object_name}", @object)
70
70
  end
71
71
 
@@ -29,7 +29,7 @@ module Spree
29
29
 
30
30
  @return_authorizations = @order.
31
31
  return_authorizations.
32
- accessible_by(current_ability, :read).
32
+ accessible_by(current_ability).
33
33
  ransack(params[:q]).
34
34
  result
35
35
 
@@ -44,13 +44,13 @@ module Spree
44
44
 
45
45
  def show
46
46
  authorize! :admin, ReturnAuthorization
47
- @return_authorization = @order.return_authorizations.accessible_by(current_ability, :read).find(params[:id])
47
+ @return_authorization = @order.return_authorizations.accessible_by(current_ability, :show).find(params[:id])
48
48
  respond_with(@return_authorization)
49
49
  end
50
50
 
51
51
  def update
52
52
  @return_authorization = @order.return_authorizations.accessible_by(current_ability, :update).find(params[:id])
53
- if @return_authorization.update_attributes(return_authorization_params)
53
+ if @return_authorization.update(return_authorization_params)
54
54
  respond_with(@return_authorization, default_template: :show)
55
55
  else
56
56
  invalid_resource!(@return_authorization)
@@ -70,7 +70,7 @@ module Spree
70
70
 
71
71
  def load_order
72
72
  @order ||= Spree::Order.find_by!(number: order_id)
73
- authorize! :read, @order
73
+ authorize! :show, @order
74
74
  end
75
75
 
76
76
  def return_authorization_params
@@ -132,7 +132,7 @@ module Spree
132
132
 
133
133
  def find_order_on_create
134
134
  @order = Spree::Order.find_by!(number: params[:shipment][:order_id])
135
- authorize! :read, @order
135
+ authorize! :show, @order
136
136
  end
137
137
 
138
138
  def find_shipment
@@ -146,7 +146,7 @@ module Spree
146
146
  end
147
147
 
148
148
  def update_shipment
149
- @shipment.update_attributes(shipment_params)
149
+ @shipment.update(shipment_params)
150
150
  @shipment.reload
151
151
  end
152
152
 
@@ -25,10 +25,10 @@ module Spree
25
25
 
26
26
  def scope
27
27
  if params[:country_id]
28
- @country = Spree::Country.accessible_by(current_ability, :read).find(params[:country_id])
29
- @country.states.accessible_by(current_ability, :read)
28
+ @country = Spree::Country.accessible_by(current_ability, :show).find(params[:country_id])
29
+ @country.states.accessible_by(current_ability)
30
30
  else
31
- Spree::State.accessible_by(current_ability, :read)
31
+ Spree::State.accessible_by(current_ability)
32
32
  end
33
33
  end
34
34
  end
@@ -40,7 +40,7 @@ module Spree
40
40
  adjustment -= @stock_item.count_on_hand if params[:stock_item][:force]
41
41
 
42
42
  Spree::StockItem.transaction do
43
- if @stock_item.update_attributes(stock_item_params)
43
+ if @stock_item.update(stock_item_params)
44
44
  adjust_stock_item_count_on_hand(adjustment)
45
45
  respond_with(@stock_item, status: 200, default_template: :show)
46
46
  else
@@ -58,12 +58,12 @@ module Spree
58
58
  private
59
59
 
60
60
  def load_stock_location
61
- @stock_location ||= Spree::StockLocation.accessible_by(current_ability).find(params.fetch(:stock_location_id))
61
+ @stock_location ||= Spree::StockLocation.accessible_by(current_ability, :show).find(params.fetch(:stock_location_id))
62
62
  end
63
63
 
64
64
  def scope
65
65
  includes = { variant: [{ option_values: :option_type }, :product] }
66
- @stock_location.stock_items.accessible_by(current_ability, :read).includes(includes)
66
+ @stock_location.stock_items.accessible_by(current_ability).includes(includes)
67
67
  end
68
68
 
69
69
  def stock_item_params
@@ -4,10 +4,10 @@ module Spree
4
4
  module Api
5
5
  class StockLocationsController < Spree::Api::BaseController
6
6
  def index
7
- authorize! :read, StockLocation
7
+ authorize! :index, StockLocation
8
8
 
9
9
  @stock_locations = StockLocation.
10
- accessible_by(current_ability, :read).
10
+ accessible_by(current_ability).
11
11
  order('name ASC').
12
12
  ransack(params[:q]).
13
13
  result
@@ -33,7 +33,7 @@ module Spree
33
33
 
34
34
  def update
35
35
  authorize! :update, stock_location
36
- if stock_location.update_attributes(stock_location_params)
36
+ if stock_location.update(stock_location_params)
37
37
  respond_with(stock_location, status: 200, default_template: :show)
38
38
  else
39
39
  invalid_resource!(stock_location)
@@ -49,7 +49,7 @@ module Spree
49
49
  private
50
50
 
51
51
  def stock_location
52
- @stock_location ||= Spree::StockLocation.accessible_by(current_ability, :read).find(params[:id])
52
+ @stock_location ||= Spree::StockLocation.accessible_by(current_ability, :show).find(params[:id])
53
53
  end
54
54
 
55
55
  def stock_location_params
@@ -6,7 +6,7 @@ module Spree
6
6
  before_action :stock_location, except: [:update, :destroy]
7
7
 
8
8
  def index
9
- authorize! :read, StockMovement
9
+ authorize! :index, StockMovement
10
10
  @stock_movements = paginate(scope.ransack(params[:q]).result)
11
11
  respond_with(@stock_movements)
12
12
  end
@@ -29,11 +29,11 @@ module Spree
29
29
  private
30
30
 
31
31
  def stock_location
32
- @stock_location ||= Spree::StockLocation.accessible_by(current_ability, :read).find(params[:stock_location_id])
32
+ @stock_location ||= Spree::StockLocation.accessible_by(current_ability, :show).find(params[:stock_location_id])
33
33
  end
34
34
 
35
35
  def scope
36
- @stock_location.stock_movements.accessible_by(current_ability, :read)
36
+ @stock_location.stock_movements.accessible_by(current_ability)
37
37
  end
38
38
 
39
39
  def stock_movement_params
@@ -6,8 +6,8 @@ module Spree
6
6
  before_action :get_store, except: [:index, :create]
7
7
 
8
8
  def index
9
- authorize! :read, Store
10
- @stores = Spree::Store.accessible_by(current_ability, :read).all
9
+ authorize! :index, Store
10
+ @stores = Spree::Store.accessible_by(current_ability).all
11
11
  respond_with(@stores)
12
12
  end
13
13
 
@@ -24,7 +24,7 @@ module Spree
24
24
 
25
25
  def update
26
26
  authorize! :update, @store
27
- if @store.update_attributes(store_params)
27
+ if @store.update(store_params)
28
28
  respond_with(@store, status: 200, default_template: :show)
29
29
  else
30
30
  invalid_resource!(@store)
@@ -32,7 +32,7 @@ module Spree
32
32
  end
33
33
 
34
34
  def show
35
- authorize! :read, @store
35
+ authorize! :show, @store
36
36
  respond_with(@store)
37
37
  end
38
38
 
@@ -33,7 +33,7 @@ module Spree
33
33
 
34
34
  def update
35
35
  authorize! :update, taxonomy
36
- if taxonomy.update_attributes(taxonomy_params)
36
+ if taxonomy.update(taxonomy_params)
37
37
  respond_with(taxonomy, status: 200, default_template: :show)
38
38
  else
39
39
  invalid_resource!(taxonomy)
@@ -50,7 +50,7 @@ module Spree
50
50
 
51
51
  def taxonomies
52
52
  @taxonomies = Taxonomy.
53
- accessible_by(current_ability, :read).
53
+ accessible_by(current_ability).
54
54
  order('name').
55
55
  includes(root: :children).
56
56
  ransack(params[:q]).
@@ -58,7 +58,9 @@ module Spree
58
58
  end
59
59
 
60
60
  def taxonomy
61
- @taxonomy ||= Spree::Taxonomy.accessible_by(current_ability, :read).find(params[:id])
61
+ @taxonomy ||= Spree::Taxonomy.accessible_by(current_ability, :show).
62
+ includes(root: :children).
63
+ find(params[:id])
62
64
  end
63
65
 
64
66
  def taxonomy_params
@@ -7,9 +7,9 @@ module Spree
7
7
  if taxonomy
8
8
  @taxons = taxonomy.root.children
9
9
  elsif params[:ids]
10
- @taxons = Spree::Taxon.accessible_by(current_ability, :read).where(id: params[:ids].split(','))
10
+ @taxons = Spree::Taxon.accessible_by(current_ability).where(id: params[:ids].split(','))
11
11
  else
12
- @taxons = Spree::Taxon.accessible_by(current_ability, :read).order(:taxonomy_id, :lft).ransack(params[:q]).result
12
+ @taxons = Spree::Taxon.accessible_by(current_ability).order(:taxonomy_id, :lft).ransack(params[:q]).result
13
13
  end
14
14
 
15
15
  unless params[:without_children]
@@ -56,7 +56,7 @@ module Spree
56
56
 
57
57
  def update
58
58
  authorize! :update, taxon
59
- if taxon.update_attributes(taxon_params)
59
+ if taxon.update(taxon_params)
60
60
  respond_with(taxon, status: 200, default_template: :show)
61
61
  else
62
62
  invalid_resource!(taxon)
@@ -96,12 +96,12 @@ module Spree
96
96
 
97
97
  def taxonomy
98
98
  if params[:taxonomy_id].present?
99
- @taxonomy ||= Spree::Taxonomy.accessible_by(current_ability, :read).find(params[:taxonomy_id])
99
+ @taxonomy ||= Spree::Taxonomy.accessible_by(current_ability, :show).find(params[:taxonomy_id])
100
100
  end
101
101
  end
102
102
 
103
103
  def taxon
104
- @taxon ||= taxonomy.taxons.accessible_by(current_ability, :read).find(params[:id])
104
+ @taxon ||= taxonomy.taxons.accessible_by(current_ability, :show).find(params[:id])
105
105
  end
106
106
 
107
107
  def taxon_params
@@ -1,6 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Spree::Api::UsersController < Spree::Api::ResourceController
4
+ def index
5
+ user_scope = model_class.accessible_by(current_ability, :show)
6
+ if params[:ids]
7
+ ids = params[:ids].split(",").flatten
8
+ @users = user_scope.where(id: ids)
9
+ else
10
+ @users = user_scope.ransack(params[:q]).result
11
+ end
12
+
13
+ @users = paginate(@users.distinct)
14
+ respond_with(@users)
15
+ end
16
+
4
17
  private
5
18
 
6
19
  attr_reader :user