spree_cm_commissioner 2.1.7 → 2.1.8
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 +8 -1
- data/app/controllers/spree/admin/user_security_controller.rb +25 -0
- data/app/models/spree_cm_commissioner/user_decorator.rb +16 -0
- data/app/overrides/spree/admin/users/_tabs/tabs.html.erb.deface +6 -0
- data/app/views/spree/admin/user_security/show.html.erb +25 -0
- data/config/locales/en.yml +1 -0
- data/config/routes.rb +5 -0
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +1 -0
- data/spree_cm_commissioner.gemspec +1 -0
- 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: 36165e2d7e9f037f00a0590045ae9c6171825a79f0499ec4cb70af91a246b0d5
|
4
|
+
data.tar.gz: b6d46f79ab01845de456585f50881dbca8b0b28d208e2db386a1833a9dfe1b30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd7ac99403f71109009b3d06dff1fc5a72b61b833d00e27f2a7513c552f7005782ff819a5e69ca67d64160865af6fabf4dd9554f7253b3cbd85ea4ba283b555a
|
7
|
+
data.tar.gz: f7d227c43eb5ecfc72eeebbf715e651f576f998a769106a1303e647680a9b4e82820b1e31e3c3b10299a1ee79fa6da9fde4fce5ea9ec62074b62d5b6e937d560
|
data/Gemfile.lock
CHANGED
@@ -34,7 +34,7 @@ GIT
|
|
34
34
|
PATH
|
35
35
|
remote: .
|
36
36
|
specs:
|
37
|
-
spree_cm_commissioner (2.1.
|
37
|
+
spree_cm_commissioner (2.1.8)
|
38
38
|
activerecord-multi-tenant
|
39
39
|
activerecord_json_validator (~> 2.1, >= 2.1.3)
|
40
40
|
aws-sdk-cloudfront
|
@@ -44,6 +44,7 @@ PATH
|
|
44
44
|
byebug
|
45
45
|
connection_pool
|
46
46
|
counter_culture (~> 3.2)
|
47
|
+
devise-two-factor
|
47
48
|
dry-validation (~> 1.10)
|
48
49
|
elasticsearch (~> 8.5)
|
49
50
|
exception_notification
|
@@ -291,6 +292,11 @@ GEM
|
|
291
292
|
warden (~> 1.2.3)
|
292
293
|
devise-encryptable (0.2.0)
|
293
294
|
devise (>= 2.1.0)
|
295
|
+
devise-two-factor (6.1.0)
|
296
|
+
activesupport (>= 7.0, < 8.1)
|
297
|
+
devise (~> 4.0)
|
298
|
+
railties (>= 7.0, < 8.1)
|
299
|
+
rotp (~> 6.0)
|
294
300
|
diff-lcs (1.5.0)
|
295
301
|
docile (1.4.0)
|
296
302
|
domain_name (0.5.20190701)
|
@@ -701,6 +707,7 @@ GEM
|
|
701
707
|
railties (>= 5.2)
|
702
708
|
retriable (3.1.2)
|
703
709
|
rexml (3.2.6)
|
710
|
+
rotp (6.3.0)
|
704
711
|
rqrcode (2.2.0)
|
705
712
|
chunky_png (~> 1.0)
|
706
713
|
rqrcode_core (~> 1.0)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
class UserSecurityController < Spree::Admin::BaseController
|
4
|
+
before_action :load_user
|
5
|
+
|
6
|
+
def disable_authenticator
|
7
|
+
@user.otp_secret = nil
|
8
|
+
@user.otp_required_for_login = false
|
9
|
+
begin
|
10
|
+
@user.save!
|
11
|
+
flash[:success] = I18n.t('authenticator.success_disabled_2fa')
|
12
|
+
rescue StandardError => e
|
13
|
+
flash[:error] = "Failed to disable 2FA: #{e.message}"
|
14
|
+
end
|
15
|
+
redirect_to admin_user_security_path(@user)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def load_user
|
21
|
+
@user = Spree::User.find(params[:user_id])
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -46,6 +46,10 @@ module SpreeCmCommissioner
|
|
46
46
|
# Store has_incomplete_guest_info in public_metadata for easy frontend access
|
47
47
|
base.store :public_metadata, accessors: [:has_incomplete_guest_info], coder: JSON
|
48
48
|
|
49
|
+
base.devise :two_factor_authenticatable
|
50
|
+
|
51
|
+
base.store :private_metadata, accessors: %i[otp_secret otp_required_for_login consumed_timestep], coder: JSON
|
52
|
+
|
49
53
|
define_user_places(base)
|
50
54
|
|
51
55
|
def base.end_users
|
@@ -63,6 +67,18 @@ module SpreeCmCommissioner
|
|
63
67
|
end
|
64
68
|
end
|
65
69
|
|
70
|
+
def otp_secret
|
71
|
+
private_metadata['otp_secret']
|
72
|
+
end
|
73
|
+
|
74
|
+
def otp_required_for_login
|
75
|
+
private_metadata['otp_required_for_login']
|
76
|
+
end
|
77
|
+
|
78
|
+
def consumed_timestep
|
79
|
+
private_metadata['consumed_timestep']
|
80
|
+
end
|
81
|
+
|
66
82
|
def self.define_user_places(base)
|
67
83
|
base.has_many :user_places, class_name: 'SpreeCmCommissioner::UserPlace'
|
68
84
|
base.has_many :places, through: :user_places, class_name: 'SpreeCmCommissioner::Place'
|
@@ -49,4 +49,10 @@
|
|
49
49
|
admin_user_events_path(user_id: @user.id),
|
50
50
|
class: "nav-link #{'active' if current == :user_events }" %>
|
51
51
|
</li>
|
52
|
+
<li class="nav-item">
|
53
|
+
<%= link_to_with_icon 'shield-check.svg',
|
54
|
+
Spree.t(:security),
|
55
|
+
admin_user_security_path(@user),
|
56
|
+
class: "nav-link #{'active' if current == :security }" %>
|
57
|
+
</li>
|
52
58
|
<% end %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<%= render partial: 'spree/admin/users/tabs', locals: { current: :security } %>
|
2
|
+
|
3
|
+
<div class="card shadow-sm">
|
4
|
+
<div class="card-header bg-light">
|
5
|
+
<h5 class="card-title mb-0 h6">
|
6
|
+
<%= Spree.t(:two_factor_authentication) %>
|
7
|
+
</h5>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="card-body text-center">
|
11
|
+
<% if @user.otp_secret.present? && @user.otp_required_for_login == true %>
|
12
|
+
<p class="text-muted mb-3">
|
13
|
+
Two-factor authentication is currently active for this user.
|
14
|
+
</p>
|
15
|
+
<%= button_to disable_authenticator_admin_user_security_path, method: :delete, class: "btn btn-danger btn-md",
|
16
|
+
data: { confirm: "Are you sure?" } do %>
|
17
|
+
Disable 2FA
|
18
|
+
<% end %>
|
19
|
+
<% else %>
|
20
|
+
<p class="text-muted mb-0">
|
21
|
+
Two-factor authentication is <strong>not enabled</strong> for this user.
|
22
|
+
</p>
|
23
|
+
<% end %>
|
24
|
+
</div>
|
25
|
+
</div>
|
data/config/locales/en.yml
CHANGED
data/config/routes.rb
CHANGED
@@ -91,6 +91,11 @@ Spree::Core::Engine.add_routes do
|
|
91
91
|
resources :users do
|
92
92
|
resources :device_tokens
|
93
93
|
resources :user_identity_providers
|
94
|
+
resource :security, controller: :user_security, only: %i[show] do
|
95
|
+
member do
|
96
|
+
delete :disable_authenticator
|
97
|
+
end
|
98
|
+
end
|
94
99
|
end
|
95
100
|
|
96
101
|
resources :s3_presigned_urls, only: %i[create new]
|
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: 2.1.
|
4
|
+
version: 2.1.8
|
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: '16.0'
|
481
|
+
- !ruby/object:Gem::Dependency
|
482
|
+
name: devise-two-factor
|
483
|
+
requirement: !ruby/object:Gem::Requirement
|
484
|
+
requirements:
|
485
|
+
- - ">="
|
486
|
+
- !ruby/object:Gem::Version
|
487
|
+
version: '0'
|
488
|
+
type: :runtime
|
489
|
+
prerelease: false
|
490
|
+
version_requirements: !ruby/object:Gem::Requirement
|
491
|
+
requirements:
|
492
|
+
- - ">="
|
493
|
+
- !ruby/object:Gem::Version
|
494
|
+
version: '0'
|
481
495
|
- !ruby/object:Gem::Dependency
|
482
496
|
name: redis
|
483
497
|
requirement: !ruby/object:Gem::Requirement
|
@@ -851,6 +865,7 @@ files:
|
|
851
865
|
- app/controllers/spree/admin/trip_blazer_queries_controller.rb
|
852
866
|
- app/controllers/spree/admin/user_events_controller.rb
|
853
867
|
- app/controllers/spree/admin/user_identity_providers_controller.rb
|
868
|
+
- app/controllers/spree/admin/user_security_controller.rb
|
854
869
|
- app/controllers/spree/admin/users_controller_decorator.rb
|
855
870
|
- app/controllers/spree/admin/variant_guest_card_classes_controller.rb
|
856
871
|
- app/controllers/spree/admin/vectors/icons_controller.rb
|
@@ -2085,6 +2100,7 @@ files:
|
|
2085
2100
|
- app/views/spree/admin/user_identity_providers/edit.html.erb
|
2086
2101
|
- app/views/spree/admin/user_identity_providers/index.html.erb
|
2087
2102
|
- app/views/spree/admin/user_identity_providers/new.html.erb
|
2103
|
+
- app/views/spree/admin/user_security/show.html.erb
|
2088
2104
|
- app/views/spree/admin/variant_guest_card_classes/_variant_guest_card_class.html.erb
|
2089
2105
|
- app/views/spree/admin/variant_guest_card_classes/index.html.erb
|
2090
2106
|
- app/views/spree/admin/variants/_date_field.html.erb
|