spree_cm_commissioner 1.8.8 → 1.8.9
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/Gemfile.lock +11 -1
- data/app/controllers/blazer/base_controller_decorator.rb +7 -2
- data/app/controllers/spree/api/v2/storefront/pin_code_generators_controller.rb +4 -2
- data/app/controllers/spree/api/v2/tenant/pin_code_generators_controller.rb +4 -2
- data/app/helpers/spree_cm_commissioner/pin_code_sender_helper.rb +22 -0
- data/app/interactors/spree_cm_commissioner/pin_code_sender.rb +14 -2
- data/app/interactors/spree_cm_commissioner/sms.rb +1 -1
- data/app/interactors/spree_cm_commissioner/telegram_debug_pin_code_sender.rb +2 -1
- data/app/jobs/spree_cm_commissioner/sms_pin_code_job.rb +1 -1
- data/app/jobs/spree_cm_commissioner/telegram_debug_pin_code_sender_job.rb +11 -3
- data/app/mailers/spree_cm_commissioner/pin_code_mailer.rb +9 -3
- data/app/models/concerns/spree_cm_commissioner/store_preference.rb +1 -0
- data/app/models/spree_cm_commissioner/store_decorator.rb +1 -0
- data/app/models/spree_cm_commissioner/tenant.rb +4 -0
- data/app/views/spree/shared/_base_mailer_header.html.erb +12 -0
- data/app/views/spree_cm_commissioner/pin_code_mailer/send_pin_code.html.erb +2 -2
- data/config/routes.rb +5 -0
- data/db/migrate/20250403040036_install_blazer.rb +1 -1
- data/db/migrate/20250403083001_create_spree_cm_commissioner_taxon_blazer_query.rb +0 -1
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +1 -0
- data/spree_cm_commissioner.gemspec +1 -1
- metadata +17 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b66674e326443a681e0e4f80caa6a25569d508141a05966471c14f675a6690d
|
4
|
+
data.tar.gz: ab0ab4b8b78a04c5a9f54ab15ce88df60b5719b85566ab8aae8c1a6574a46d73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb4d294124696d2fa0aa76beb43eb2ce76182565118d5d98b750efd5df27daadd2081dc4c3bd707c37794c375d3ac0f55b448ec0c2b52389b6169f70d261102d
|
7
|
+
data.tar.gz: d522bb1bc55ddb70ce0185ab6c0352a51829199c535da283555a33d9ca1897379b95229593fc2e98ed0023c8d4ca3ef9318438d1558439435656b9a33c8d14ac
|
data/Gemfile.lock
CHANGED
@@ -34,12 +34,13 @@ GIT
|
|
34
34
|
PATH
|
35
35
|
remote: .
|
36
36
|
specs:
|
37
|
-
spree_cm_commissioner (1.8.
|
37
|
+
spree_cm_commissioner (1.8.9)
|
38
38
|
activerecord-multi-tenant
|
39
39
|
activerecord_json_validator (~> 2.1, >= 2.1.3)
|
40
40
|
aws-sdk-cloudfront
|
41
41
|
aws-sdk-ecs
|
42
42
|
aws-sdk-s3
|
43
|
+
blazer (~> 3.0.4)
|
43
44
|
byebug
|
44
45
|
counter_culture (~> 3.2)
|
45
46
|
dry-validation (~> 1.10)
|
@@ -215,6 +216,12 @@ GEM
|
|
215
216
|
base64 (0.1.1)
|
216
217
|
bcrypt (3.1.19)
|
217
218
|
bigdecimal (3.1.8)
|
219
|
+
blazer (3.0.4)
|
220
|
+
activerecord (>= 6.1)
|
221
|
+
chartkick (>= 5)
|
222
|
+
csv
|
223
|
+
railties (>= 6.1)
|
224
|
+
safely_block (>= 0.4)
|
218
225
|
bootstrap (4.6.2)
|
219
226
|
autoprefixer-rails (>= 9.1.0)
|
220
227
|
popper_js (>= 1.16.1, < 2)
|
@@ -238,6 +245,7 @@ GEM
|
|
238
245
|
capybara-select-2 (0.5.1)
|
239
246
|
carmen (1.1.3)
|
240
247
|
activesupport (>= 3.0.0)
|
248
|
+
chartkick (5.1.4)
|
241
249
|
chunky_png (1.4.0)
|
242
250
|
coderay (1.1.3)
|
243
251
|
concurrent-ruby (1.2.2)
|
@@ -253,6 +261,7 @@ GEM
|
|
253
261
|
crass (1.0.6)
|
254
262
|
css_parser (1.16.0)
|
255
263
|
addressable
|
264
|
+
csv (3.3.3)
|
256
265
|
database_cleaner (2.0.2)
|
257
266
|
database_cleaner-active_record (>= 2, < 3)
|
258
267
|
database_cleaner-active_record (2.1.0)
|
@@ -698,6 +707,7 @@ GEM
|
|
698
707
|
ffi (~> 1.12)
|
699
708
|
ruby2_keywords (0.0.5)
|
700
709
|
rubyzip (2.3.2)
|
710
|
+
safely_block (0.4.1)
|
701
711
|
sass-rails (6.0.0)
|
702
712
|
sassc-rails (~> 2.1, >= 2.1.1)
|
703
713
|
sassc (2.4.0)
|
@@ -1,10 +1,15 @@
|
|
1
|
+
# https://stackoverflow.com/questions/77318060/blazer-raised-activerecordconnectionnotestablished
|
1
2
|
module Blazer
|
2
3
|
module BaseControllerDecorator
|
3
4
|
def self.prepended(base)
|
5
|
+
base.around_action :set_writing_role
|
4
6
|
base.before_action :restrict_organizer_access
|
5
7
|
end
|
6
8
|
|
7
|
-
|
9
|
+
# Annonymous block: https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Naming/BlockForwarding
|
10
|
+
def set_writing_role(&block)
|
11
|
+
ActiveRecord::Base.connected_to(role: :writing, &block)
|
12
|
+
end
|
8
13
|
|
9
14
|
def restrict_organizer_access
|
10
15
|
return unless spree_current_user.organizer? && !spree_current_user.admin?
|
@@ -15,4 +20,4 @@ module Blazer
|
|
15
20
|
end
|
16
21
|
end
|
17
22
|
|
18
|
-
Blazer::BaseController.prepend(Blazer::BaseControllerDecorator)
|
23
|
+
Blazer::BaseController.prepend(Blazer::BaseControllerDecorator) unless Blazer::BaseController.ancestors.include?(Blazer::BaseControllerDecorator)
|
@@ -19,7 +19,7 @@ module Spree
|
|
19
19
|
render_error_payload(context.message, 400)
|
20
20
|
end
|
21
21
|
|
22
|
-
# :phone_number, :email, :type, :
|
22
|
+
# :phone_number, :email, :type, :tenant
|
23
23
|
def create
|
24
24
|
context = SpreeCmCommissioner::PinCodeGenerator.call(pin_code_attrs)
|
25
25
|
|
@@ -40,8 +40,10 @@ module Spree
|
|
40
40
|
SpreeCmCommissioner::V2::Storefront::PinCodeSerializer
|
41
41
|
end
|
42
42
|
|
43
|
+
private
|
44
|
+
|
43
45
|
def pin_code_attrs
|
44
|
-
params.slice(:phone_number, :email, :type)
|
46
|
+
params.slice(:phone_number, :email, :type).merge(tenant: @tenant)
|
45
47
|
end
|
46
48
|
end
|
47
49
|
end
|
@@ -3,7 +3,7 @@ module Spree
|
|
3
3
|
module V2
|
4
4
|
module Tenant
|
5
5
|
class PinCodeGeneratorsController < BaseController
|
6
|
-
# :phone_number, :email, :type
|
6
|
+
# :phone_number, :email, :type, :tenant
|
7
7
|
def create
|
8
8
|
context = SpreeCmCommissioner::PinCodeGenerator.call(pin_code_attrs)
|
9
9
|
|
@@ -24,8 +24,10 @@ module Spree
|
|
24
24
|
SpreeCmCommissioner::V2::Storefront::PinCodeSerializer
|
25
25
|
end
|
26
26
|
|
27
|
+
private
|
28
|
+
|
27
29
|
def pin_code_attrs
|
28
|
-
params.slice(:phone_number, :email, :type)
|
30
|
+
params.slice(:phone_number, :email, :type).merge(tenant: @tenant)
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module SpreeCmCommissioner
|
2
|
+
module PinCodeSenderHelper
|
3
|
+
def sender_name(tenant)
|
4
|
+
return Spree::Store.default&.name if tenant.nil?
|
5
|
+
|
6
|
+
tenant.active_vendor&.name
|
7
|
+
end
|
8
|
+
|
9
|
+
def sender_email(tenant)
|
10
|
+
return Spree::Store.default.mail_from_address if tenant.nil?
|
11
|
+
|
12
|
+
tenant.active_vendor&.notification_email
|
13
|
+
end
|
14
|
+
|
15
|
+
def logo_url(tenant)
|
16
|
+
vendor_or_store = tenant.nil? || tenant.active_vendor.nil? ? Spree::Store.default : tenant.active_vendor
|
17
|
+
return unless vendor_or_store&.logo&.attachment&.attached?
|
18
|
+
|
19
|
+
main_app.cdn_image_url(vendor_or_store.logo.attachment.variant(resize_to_limit: [244, 104]))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -15,7 +15,10 @@ module SpreeCmCommissioner
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def send_sms
|
18
|
+
from = context.tenant || Spree::Store.default
|
19
|
+
|
18
20
|
options = {
|
21
|
+
from: from,
|
19
22
|
to: context.pin_code.contact,
|
20
23
|
body: I18n.t('pincode_sender.sms.body', code: context.pin_code.code, readable_type: context.pin_code.readable_type)
|
21
24
|
}
|
@@ -24,13 +27,22 @@ module SpreeCmCommissioner
|
|
24
27
|
end
|
25
28
|
|
26
29
|
def send_email
|
27
|
-
SpreeCmCommissioner::PinCodeMailer.send_pin_code(
|
30
|
+
SpreeCmCommissioner::PinCodeMailer.send_pin_code(
|
31
|
+
context.pin_code.id,
|
32
|
+
context.pin_code.readable_type,
|
33
|
+
context.tenant
|
34
|
+
).deliver_later
|
28
35
|
end
|
29
36
|
|
30
37
|
def send_telegram_debug_pin_code
|
31
38
|
return unless ENV['PIN_CODE_DEBUG_NOTIFIY_TELEGRAM_ENABLE'] == 'yes'
|
32
39
|
|
33
|
-
|
40
|
+
options = {
|
41
|
+
pin_code_id: context.pin_code.id,
|
42
|
+
tenant_id: context.tenant&.id
|
43
|
+
}
|
44
|
+
|
45
|
+
SpreeCmCommissioner::TelegramDebugPinCodeSenderJob.perform_later(options)
|
34
46
|
end
|
35
47
|
end
|
36
48
|
end
|
@@ -40,7 +40,7 @@ module SpreeCmCommissioner
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def sms_options
|
43
|
-
opts = { to: context.to, body: context.body }
|
43
|
+
opts = { from: context.from, to: context.to, body: context.body }
|
44
44
|
opts[:to] = sanitize(opts[:to]) if opts[:to].present?
|
45
45
|
opts[:from] = from_number
|
46
46
|
opts
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module SpreeCmCommissioner
|
2
2
|
class TelegramDebugPinCodeSender < BaseInteractor
|
3
|
-
delegate :pin_code, to: :context
|
3
|
+
delegate :pin_code, :name, to: :context
|
4
4
|
|
5
5
|
def call
|
6
6
|
telegram_client.send_message(
|
@@ -13,6 +13,7 @@ module SpreeCmCommissioner
|
|
13
13
|
def body
|
14
14
|
text = []
|
15
15
|
|
16
|
+
text << "<b>From: #{name}</b>"
|
16
17
|
text << "<b>PIN CODE sent to #{pin_code.contact}</b>"
|
17
18
|
text << "<code>#{pin_code.code}</code> is your #{pin_code.readable_type}"
|
18
19
|
|
@@ -1,9 +1,17 @@
|
|
1
1
|
module SpreeCmCommissioner
|
2
2
|
class TelegramDebugPinCodeSenderJob < ApplicationUniqueJob
|
3
|
-
|
4
|
-
pin_code = SpreeCmCommissioner::PinCode.find(pin_code_id)
|
3
|
+
include SpreeCmCommissioner::PinCodeSenderHelper
|
5
4
|
|
6
|
-
|
5
|
+
def perform(options)
|
6
|
+
pin_code = SpreeCmCommissioner::PinCode.find(options[:pin_code_id])
|
7
|
+
tenant = SpreeCmCommissioner::Tenant.find_by(id: options[:tenant_id])
|
8
|
+
|
9
|
+
name = sender_name(tenant)
|
10
|
+
|
11
|
+
SpreeCmCommissioner::TelegramDebugPinCodeSender.call(
|
12
|
+
pin_code: pin_code,
|
13
|
+
name: name
|
14
|
+
)
|
7
15
|
end
|
8
16
|
end
|
9
17
|
end
|
@@ -1,13 +1,19 @@
|
|
1
1
|
module SpreeCmCommissioner
|
2
2
|
class PinCodeMailer < Spree::BaseMailer
|
3
|
-
|
3
|
+
include SpreeCmCommissioner::PinCodeSenderHelper
|
4
|
+
|
5
|
+
def send_pin_code(pin_code_id, action, tenant)
|
4
6
|
@pin_code = SpreeCmCommissioner::PinCode.find(pin_code_id)
|
5
7
|
|
8
|
+
@sender_name = sender_name(tenant)
|
9
|
+
@sender_email = sender_email(tenant)
|
10
|
+
@logo_path = logo_url(tenant)
|
11
|
+
|
6
12
|
return unless @pin_code.email?
|
7
13
|
|
8
|
-
subject = "#{
|
14
|
+
subject = "#{@sender_name} #{action.titlecase}"
|
9
15
|
|
10
|
-
mail(from:
|
16
|
+
mail(from: @sender_email, to: @pin_code.contact, subject: subject)
|
11
17
|
end
|
12
18
|
end
|
13
19
|
end
|
@@ -5,6 +5,7 @@ module SpreeCmCommissioner
|
|
5
5
|
|
6
6
|
base.has_one :default_notification_image, class_name: 'SpreeCmCommissioner::FeatureImage', dependent: :destroy, as: :viewable
|
7
7
|
base.accepts_nested_attributes_for :default_notification_image, reject_if: :all_blank
|
8
|
+
base.multi_tenant :tenant, class_name: 'SpreeCmCommissioner::Tenant'
|
8
9
|
end
|
9
10
|
end
|
10
11
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<!-- override base_mailer_header.html.erb -->
|
2
|
+
<tr>
|
3
|
+
<td class="email-masthead">
|
4
|
+
<%= link_to @sender_name, class: 'template-label' do %>
|
5
|
+
<% if @logo_path.present? %>
|
6
|
+
<%= image_tag @logo_path, class: 'logo', alt: @sender_name, title: @sender_name %>
|
7
|
+
<% else %>
|
8
|
+
<%= @sender_name %>
|
9
|
+
<% end %>
|
10
|
+
<% end %>
|
11
|
+
</td>
|
12
|
+
</tr>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<tr>
|
4
4
|
<td>
|
5
5
|
<h4>Hello, </h4>
|
6
|
-
<p>Welcome to <%=
|
6
|
+
<p>Welcome to <%= @sender_name %> </p>
|
7
7
|
<p>Please use the following code:</p>
|
8
8
|
<h5 style="font-size: 22px;padding: 0 10px;"><%= @pin_code.code %></h5>
|
9
9
|
<p>to verify your account.</p>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<br>
|
12
12
|
<p>
|
13
13
|
Regards,<br>
|
14
|
-
The <%=
|
14
|
+
The <%= @sender_name %> team
|
15
15
|
</p>
|
16
16
|
</td>
|
17
17
|
</tr>
|
data/config/routes.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
Spree::Core::Engine.add_routes do
|
2
2
|
# Add your extension routes here
|
3
|
+
|
4
|
+
authenticate :spree_user, -> (user) { user.admin? || user.organizer? } do
|
5
|
+
mount Blazer::Engine, at: 'admin/bi_reports'
|
6
|
+
end
|
7
|
+
|
3
8
|
namespace :admin do
|
4
9
|
post '/invalidate_api_caches', to: 'base#invalidate_api_caches'
|
5
10
|
|
@@ -28,7 +28,6 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_dependency 'spree_backend', spree_opts
|
29
29
|
s.add_dependency 'spree_multi_vendor', '>= 2.4.1'
|
30
30
|
s.add_dependency 'spree_extension'
|
31
|
-
|
32
31
|
s.add_dependency 'activerecord-multi-tenant'
|
33
32
|
s.add_dependency 'phonelib'
|
34
33
|
s.add_dependency 'aws-sdk-ecs'
|
@@ -56,5 +55,6 @@ Gem::Specification.new do |s|
|
|
56
55
|
s.add_dependency 'counter_culture', '~> 3.2'
|
57
56
|
s.add_development_dependency 'pg'
|
58
57
|
s.add_development_dependency 'spree_dev_tools'
|
58
|
+
s.add_dependency 'blazer', '~> 3.0.4'
|
59
59
|
s.metadata['rubygems_mfa_required'] = 'true'
|
60
60
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_cm_commissioner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- You
|
@@ -478,6 +478,20 @@ dependencies:
|
|
478
478
|
- - ">="
|
479
479
|
- !ruby/object:Gem::Version
|
480
480
|
version: '0'
|
481
|
+
- !ruby/object:Gem::Dependency
|
482
|
+
name: blazer
|
483
|
+
requirement: !ruby/object:Gem::Requirement
|
484
|
+
requirements:
|
485
|
+
- - "~>"
|
486
|
+
- !ruby/object:Gem::Version
|
487
|
+
version: 3.0.4
|
488
|
+
type: :runtime
|
489
|
+
prerelease: false
|
490
|
+
version_requirements: !ruby/object:Gem::Requirement
|
491
|
+
requirements:
|
492
|
+
- - "~>"
|
493
|
+
- !ruby/object:Gem::Version
|
494
|
+
version: 3.0.4
|
481
495
|
description: Add (optional) extension description here
|
482
496
|
email: you@example.com
|
483
497
|
executables: []
|
@@ -940,6 +954,7 @@ files:
|
|
940
954
|
- app/helpers/spree_cm_commissioner/admin/video_on_demand_helper.rb
|
941
955
|
- app/helpers/spree_cm_commissioner/billing/monthly_orders_helper.rb
|
942
956
|
- app/helpers/spree_cm_commissioner/billing/qrcodes_helper.rb
|
957
|
+
- app/helpers/spree_cm_commissioner/pin_code_sender_helper.rb
|
943
958
|
- app/helpers/spree_cm_commissioner/telegram/base_helper.rb
|
944
959
|
- app/helpers/spree_cm_commissioner/transit/service_calendars_helper.rb
|
945
960
|
- app/interactors/spree_cm_commissioner/accommodation_search_detail.rb
|
@@ -1909,6 +1924,7 @@ files:
|
|
1909
1924
|
- app/views/spree/order_mailer/confirm_email.html.erb
|
1910
1925
|
- app/views/spree/order_mailer/ticket_email.html.erb
|
1911
1926
|
- app/views/spree/order_mailer/ticket_email.text.erb
|
1927
|
+
- app/views/spree/shared/_base_mailer_header.html.erb
|
1912
1928
|
- app/views/spree/telegram/errors/_error.html.erb
|
1913
1929
|
- app/views/spree/telegram/errors/forbidden.html.erb
|
1914
1930
|
- app/views/spree/telegram/errors/resource_not_found.html.erb
|