solidus_core 4.8.0 → 4.8.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '01835b000500c6523be13d69e3b323203e5e5e5e8cdc0879c20b80aecbc4ab6e'
4
- data.tar.gz: 81ad53d980d3d2c9fca7cce88e1b9fa0546114e6431d064ac53b46edfeb85e92
3
+ metadata.gz: 65ac35251045489c988ae7b0f045d1ceaa8e5eb8d1a17b270af8519d9da262fc
4
+ data.tar.gz: d96ab2c3eabbf7b0bd7cb37359e8381c8e5c1746e32345a1c42a740d5f8a917f
5
5
  SHA512:
6
- metadata.gz: af199e02adbf3b4ee94bfb927bc2a6f7b5320737a65a7de7147700e3f5a4bec71147ae1b20881f27b71d522321833c9eaab60873bfb3cfe91eee48bcb40f9c53
7
- data.tar.gz: 9ca9fbf1c2706cc69e11654026e6f64f2a623051c70dce63e57a9db46ba03542f98888371751e1c6fa19d2f731f35c839612f9423ca9d78ee968abf3cd93f0bf
6
+ metadata.gz: faed629daa09f387fedc413fb1c202cf9f04a268034bfe30d140a022437a537eddef0fefa02d2de47de481b3cd0f66dc716aded47500d1fd7903e33601139957
7
+ data.tar.gz: 73b6283308f00372da233356573f0c44ed4ffb254aba4929850ba90f40da72d323b85d604660e49d4f6678c9d52866dcadb2489a72b15a7b5f3a344efac99d3a
@@ -330,8 +330,15 @@ module Spree
330
330
 
331
331
  # Associates the specified user with the order.
332
332
  def associate_user!(user, override_email = true)
333
+ user_changed = user_id != user.try(:id)
333
334
  self.user = user
334
335
  attrs_to_set = {user_id: user.try(:id)}
336
+
337
+ if user_changed
338
+ self.guest_token = nil
339
+ attrs_to_set[:guest_token] = create_token
340
+ end
341
+
335
342
  attrs_to_set[:email] = user.try(:email) if override_email
336
343
  attrs_to_set[:created_by_id] = user.try(:id) if created_by.blank?
337
344
 
@@ -11,7 +11,7 @@ module Spree
11
11
  # * :gateway_customer_profile_id, :gateway_payment_profile_id (String): Gateway
12
12
  # identifiers for a new {CreditCard}, e.g. a one-time token. Raises
13
13
  # ActiveRecord::RecordNotFound if either already belongs to a {CreditCard}
14
- # owned by a different user.
14
+ # owned by a different user or order.
15
15
  # @param request_env [Hash] rack env of user creating the payment
16
16
  # @param payment [Payment] Internal use only. Instead of making a new payment, change the attributes for an existing one.
17
17
  def initialize(order, attributes, payment: nil, request_env: {})
@@ -57,11 +57,11 @@ module Spree
57
57
  end
58
58
  end
59
59
 
60
- # Gateway profile ids may only be submitted for a new source when they are
60
+ # Gateway profile IDs may only be submitted for a new source when they are
61
61
  # unknown to the store (e.g. a one-time token) or already belong to the
62
62
  # order's user. Raises if either id is stored on a {CreditCard} owned by a
63
- # different user, so customers cannot pay with another customer's stored
64
- # gateway credential.
63
+ # different user or no user, so customers cannot pay with another
64
+ # customer's stored gateway credential.
65
65
  def ensure_gateway_profile_ownership!(source_class)
66
66
  return unless source_class <= Spree::CreditCard
67
67
 
@@ -69,8 +69,10 @@ module Spree
69
69
  value = source_attributes[attribute]
70
70
  next if value.blank?
71
71
 
72
- foreign_cards = Spree::CreditCard.where(attribute => value).where.not(user_id: nil)
73
- foreign_cards = foreign_cards.where.not(user_id: order.user_id) if order&.user_id
72
+ foreign_cards = Spree::CreditCard.where(attribute => value)
73
+ if order&.user_id
74
+ foreign_cards = foreign_cards.where(user_id: nil).or(foreign_cards.where.not(user_id: order.user_id))
75
+ end
74
76
  raise ActiveRecord::RecordNotFound if foreign_cards.exists?
75
77
  end
76
78
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spree
4
- VERSION = "4.8.0"
4
+ VERSION = "4.8.1"
5
5
 
6
6
  def self.solidus_version = VERSION
7
7
 
@@ -111,5 +111,9 @@ module Spree::Preferences
111
111
  def allowed_admin_form_preference_types
112
112
  DEFAULT_ADMIN_FORM_PREFERENCE_TYPES
113
113
  end
114
+
115
+ def permitted_preference_attributes
116
+ new.admin_form_preference_names.map { |name| :"preferred_#{name}" }
117
+ end
114
118
  end
115
119
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.8.0
4
+ version: 4.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
@@ -1123,7 +1123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1123
1123
  - !ruby/object:Gem::Version
1124
1124
  version: 1.8.23
1125
1125
  requirements: []
1126
- rubygems_version: 4.0.20
1126
+ rubygems_version: 4.0.10
1127
1127
  specification_version: 4
1128
1128
  summary: Essential models, mailers, and classes for the Solidus e-commerce project.
1129
1129
  test_files: []