solidus_core 3.0.6 → 3.0.7
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 +4 -4
- data/app/models/spree/log_entry.rb +74 -1
- data/lib/generators/solidus/install/install_generator.rb +2 -1
- data/lib/spree/app_configuration.rb +16 -0
- data/lib/spree/core/engine.rb +6 -0
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/testing_support/factories/user_factory.rb +6 -0
- data/solidus_core.gemspec +1 -0
- metadata +23 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 537dddd7d010536778c7f8a680b31f260360f1979c29ae6743db0016a31ce280
|
4
|
+
data.tar.gz: ea39d3503b7fe86d3be5d21d40c435cf7ec53da8b33f28272ad7008c00c3a839
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b9b1a71a93ef6487e619d7fc14a78fc46da6803802f6773e6384e3d5ce000aaeda155dfb7eac3b538eac7ada013c704be4afc70343f85e4d29a2ae4174f1791
|
7
|
+
data.tar.gz: 5f6fee042fa4cbcbd5bc3019dfe94ea48abddcee9ec491677ddb045a3066e92dd896a12c71252e7514e2554d7dd053a0e94e83193f5cda4f01ab48328515dc65
|
@@ -2,10 +2,83 @@
|
|
2
2
|
|
3
3
|
module Spree
|
4
4
|
class LogEntry < Spree::Base
|
5
|
+
# Classes used in core that can be present in serialized details
|
6
|
+
#
|
7
|
+
# Users can add their own classes in
|
8
|
+
# `Spree::Config#log_entry_permitted_classes`.
|
9
|
+
#
|
10
|
+
# @see Spree::AppConfiguration#log_entry_permitted_classes
|
11
|
+
CORE_PERMITTED_CLASSES = [
|
12
|
+
ActiveMerchant::Billing::Response,
|
13
|
+
ActiveSupport::TimeWithZone,
|
14
|
+
Time,
|
15
|
+
ActiveSupport::TimeZone
|
16
|
+
].freeze
|
17
|
+
|
18
|
+
# Raised when a disallowed class is tried to be loaded
|
19
|
+
class DisallowedClass < RuntimeError
|
20
|
+
attr_reader :psych_exception
|
21
|
+
|
22
|
+
def initialize(psych_exception:)
|
23
|
+
@psych_exception = psych_exception
|
24
|
+
super(default_message)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def default_message
|
30
|
+
<<~MSG
|
31
|
+
#{psych_exception.message}
|
32
|
+
|
33
|
+
You can specify custom classes to be loaded in config/initializers/spree.rb. E.g:
|
34
|
+
|
35
|
+
Spree.config do |config|
|
36
|
+
config.log_entry_permitted_classes = ['MyClass']
|
37
|
+
end
|
38
|
+
MSG
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Raised when YAML contains aliases and they're not enabled
|
43
|
+
class BadAlias < RuntimeError
|
44
|
+
attr_reader :psych_exception
|
45
|
+
|
46
|
+
def initialize(psych_exception:)
|
47
|
+
@psych_exception = psych_exception
|
48
|
+
super(default_message)
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def default_message
|
54
|
+
<<~MSG
|
55
|
+
#{psych_exception.message}
|
56
|
+
|
57
|
+
You can explicitly enable aliases in config/initializers/spree.rb. E.g:
|
58
|
+
|
59
|
+
Spree.config do |config|
|
60
|
+
config.log_entry_allow_aliases = true
|
61
|
+
end
|
62
|
+
MSG
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.permitted_classes
|
67
|
+
CORE_PERMITTED_CLASSES + Spree::Config.log_entry_permitted_classes.map(&:constantize)
|
68
|
+
end
|
69
|
+
|
5
70
|
belongs_to :source, polymorphic: true, optional: true
|
6
71
|
|
7
72
|
def parsed_details
|
8
|
-
@details ||= YAML.
|
73
|
+
@details ||= YAML.safe_load(
|
74
|
+
details,
|
75
|
+
permitted_classes: self.class.permitted_classes,
|
76
|
+
aliases: Spree::Config.log_entry_allow_aliases
|
77
|
+
)
|
78
|
+
rescue Psych::DisallowedClass => e
|
79
|
+
raise DisallowedClass.new(psych_exception: e)
|
80
|
+
rescue Psych::BadAlias => e
|
81
|
+
raise BadAlias.new(psych_exception: e)
|
9
82
|
end
|
10
83
|
end
|
11
84
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rails/generators'
|
4
|
+
require 'rails/version'
|
4
5
|
|
5
6
|
module Solidus
|
6
7
|
# @private
|
@@ -15,7 +16,7 @@ module Solidus
|
|
15
16
|
class_option :migrate, type: :boolean, default: true, banner: 'Run Solidus migrations'
|
16
17
|
class_option :seed, type: :boolean, default: true, banner: 'Load seed data (migrations must be run)'
|
17
18
|
class_option :sample, type: :boolean, default: true, banner: 'Load sample data (migrations must be run)'
|
18
|
-
class_option :active_storage, type: :boolean, default:
|
19
|
+
class_option :active_storage, type: :boolean, default: Rails.gem_version >= Gem::Version.new("6.1.0"), banner: 'Install ActiveStorage as image attachments handler for products and taxons'
|
19
20
|
class_option :auto_accept, type: :boolean
|
20
21
|
class_option :user_class, type: :string
|
21
22
|
class_option :admin_email, type: :string
|
@@ -165,6 +165,22 @@ module Spree
|
|
165
165
|
# @return [String] URL of logo used on frontend (default: +'logo/solidus.svg'+)
|
166
166
|
preference :logo, :string, default: 'logo/solidus.svg'
|
167
167
|
|
168
|
+
# @!attribute [rw] log_entry_permitted_classes
|
169
|
+
# @return [Array<String>] An array of extra classes that are allowed to be
|
170
|
+
# loaded from a serialized YAML as details in {Spree::LogEntry}
|
171
|
+
# (defaults to a non-frozen empty array, so that extensions can add
|
172
|
+
# their own classes).
|
173
|
+
# @example
|
174
|
+
# config.log_entry_permitted_classes = ['Date']
|
175
|
+
preference :log_entry_permitted_classes, :array, default: []
|
176
|
+
|
177
|
+
# @!attribute [rw] log_entry_allow_aliases
|
178
|
+
# @return [Boolean] Whether YAML aliases are allowed when loading
|
179
|
+
# serialized data in {Spree::LogEntry}. It defaults to true. Depending
|
180
|
+
# on the source of your data, you may consider disabling it to prevent
|
181
|
+
# entity expansion attacks.
|
182
|
+
preference :log_entry_allow_aliases, :boolean, default: true
|
183
|
+
|
168
184
|
# @!attribute [rw] mails_from
|
169
185
|
# @return [String] Email address used as +From:+ field in transactional emails.
|
170
186
|
preference :mails_from, :string, default: 'solidus@example.com'
|
data/lib/spree/core/engine.rb
CHANGED
@@ -15,6 +15,12 @@ module Spree
|
|
15
15
|
generator.test_framework :rspec
|
16
16
|
end
|
17
17
|
|
18
|
+
if ActiveRecord.respond_to?(:yaml_column_permitted_classes) || ActiveRecord::Base.respond_to?(:yaml_column_permitted_classes)
|
19
|
+
config.active_record.yaml_column_permitted_classes ||= []
|
20
|
+
config.active_record.yaml_column_permitted_classes |=
|
21
|
+
[Symbol, BigDecimal, ActiveSupport::HashWithIndifferentAccess]
|
22
|
+
end
|
23
|
+
|
18
24
|
initializer "spree.environment", before: :load_config_initializers do |app|
|
19
25
|
app.config.spree = Spree::Config.environment
|
20
26
|
end
|
data/lib/spree/core/version.rb
CHANGED
@@ -21,6 +21,12 @@ FactoryBot.define do
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
trait :with_orders do
|
25
|
+
after(:create) do |user, _|
|
26
|
+
create(:order, user: user)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
24
30
|
factory :admin_user do
|
25
31
|
after(:create) do |user, _|
|
26
32
|
admin_role = Spree::Role.find_by(name: 'admin') || create(:role, name: 'admin')
|
data/solidus_core.gemspec
CHANGED
@@ -40,6 +40,7 @@ Gem::Specification.new do |s|
|
|
40
40
|
s.add_dependency 'mini_magick', '~> 4.10'
|
41
41
|
s.add_dependency 'monetize', '~> 1.8'
|
42
42
|
s.add_dependency 'kt-paperclip', '~> 6.3'
|
43
|
+
s.add_dependency 'psych', ['>= 3.1.0', '< 5.0']
|
43
44
|
s.add_dependency 'ransack', '~> 2.0'
|
44
45
|
s.add_dependency 'state_machines-activerecord', '~> 0.6'
|
45
46
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Solidus Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -344,6 +344,26 @@ dependencies:
|
|
344
344
|
- - "~>"
|
345
345
|
- !ruby/object:Gem::Version
|
346
346
|
version: '6.3'
|
347
|
+
- !ruby/object:Gem::Dependency
|
348
|
+
name: psych
|
349
|
+
requirement: !ruby/object:Gem::Requirement
|
350
|
+
requirements:
|
351
|
+
- - ">="
|
352
|
+
- !ruby/object:Gem::Version
|
353
|
+
version: 3.1.0
|
354
|
+
- - "<"
|
355
|
+
- !ruby/object:Gem::Version
|
356
|
+
version: '5.0'
|
357
|
+
type: :runtime
|
358
|
+
prerelease: false
|
359
|
+
version_requirements: !ruby/object:Gem::Requirement
|
360
|
+
requirements:
|
361
|
+
- - ">="
|
362
|
+
- !ruby/object:Gem::Version
|
363
|
+
version: 3.1.0
|
364
|
+
- - "<"
|
365
|
+
- !ruby/object:Gem::Version
|
366
|
+
version: '5.0'
|
347
367
|
- !ruby/object:Gem::Dependency
|
348
368
|
name: ransack
|
349
369
|
requirement: !ruby/object:Gem::Requirement
|
@@ -945,7 +965,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
945
965
|
- !ruby/object:Gem::Version
|
946
966
|
version: 1.8.23
|
947
967
|
requirements: []
|
948
|
-
rubygems_version: 3.2
|
968
|
+
rubygems_version: 3.1.2
|
949
969
|
signing_key:
|
950
970
|
specification_version: 4
|
951
971
|
summary: Essential models, mailers, and classes for the Solidus e-commerce project.
|