spree_auth_devise 4.3.2 → 4.3.3
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.
Potentially problematic release.
This version of spree_auth_devise might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gem_release.yml +2 -0
- data/Gemfile +1 -0
- data/app/mailers/spree/user_mailer.rb +1 -1
- data/app/models/spree/user.rb +5 -1
- data/config/initializers/warden.rb +1 -1
- data/config/routes.rb +3 -1
- data/lib/controllers/backend/spree/admin/user_sessions_controller.rb +16 -0
- data/lib/spree/auth/engine.rb +1 -9
- data/lib/spree/auth/version.rb +9 -0
- data/lib/views/backend/spree/admin/user_sessions/new.html.erb +1 -1
- data/spec/features/admin/sign_in_spec.rb +2 -1
- data/spec/features/checkout_spec.rb +1 -1
- data/spec/features/confirmation_spec.rb +1 -4
- data/spec/features/sign_in_spec.rb +2 -1
- data/spec/models/user_spec.rb +38 -7
- data/spec/support/confirm_helpers.rb +21 -8
- data/spree_auth_devise.gemspec +5 -1
- metadata +10 -10
- data/spec/support/user_helper.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88bd67ceeb209cf0a5429d736103ffad339942eefd7cf7f75d6b84dfbb25a553
|
4
|
+
data.tar.gz: 261b34f941e7f6584dfa9fb4a50dc76c8b4aae6f9785db618ef630da1f881312
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 489cf73cb272c2318cc35761e736a9b65fb0549e8ba938550fdf63ed16727a562180e22bfd6f210a6e6384fd8e4bb589e9a4bebf37d0e287e0c712c83e1e7214
|
7
|
+
data.tar.gz: 9e16a12db4e028e6318896d5fded01acda724348587a5f6628e437c81be41ccb4f4c6e537aac344c0ed05d223c27cfc03bcf275513ea7d84fa15eafd1f6b271a
|
data/.gem_release.yml
ADDED
data/Gemfile
CHANGED
@@ -14,7 +14,7 @@ module Spree
|
|
14
14
|
def confirmation_instructions(user, token, _opts = {})
|
15
15
|
current_store_id = _opts[:current_store_id]
|
16
16
|
@current_store = Spree::Store.find(current_store_id) || Spree::Store.current
|
17
|
-
@confirmation_url =
|
17
|
+
@confirmation_url = spree.confirmation_url(confirmation_token: token, host: Spree::Store.current.url)
|
18
18
|
@email = user.email
|
19
19
|
|
20
20
|
mail to: user.email, from: from_address, subject: @current_store.name + ' ' + I18n.t(:subject, scope: [:devise, :mailer, :confirmation_instructions]), store_url: @current_store.url
|
data/app/models/spree/user.rb
CHANGED
@@ -48,7 +48,7 @@ module Spree
|
|
48
48
|
end
|
49
49
|
|
50
50
|
opts = pending_reconfirmation? ? { to: unconfirmed_email } : {}
|
51
|
-
opts[:current_store_id] = current_store.id
|
51
|
+
opts[:current_store_id] = current_store&.id || Spree::Store.default.id
|
52
52
|
send_devise_notification(:confirmation_instructions, @raw_confirmation_token, opts)
|
53
53
|
end
|
54
54
|
|
@@ -71,6 +71,10 @@ module Spree
|
|
71
71
|
|
72
72
|
protected
|
73
73
|
|
74
|
+
def send_on_create_confirmation_instructions(current_store = nil)
|
75
|
+
send_confirmation_instructions(current_store || Spree::Store.default)
|
76
|
+
end
|
77
|
+
|
74
78
|
def password_required?
|
75
79
|
!persisted? || password.present? || password_confirmation.present?
|
76
80
|
end
|
@@ -3,7 +3,7 @@ Warden::Manager.after_set_user except: :fetch do |user, auth, _opts|
|
|
3
3
|
token = auth.cookies.signed[:guest_token] || auth.cookies.signed[:token]
|
4
4
|
token_attr = Spree::Order.has_attribute?(:token) ? :token : :guest_token
|
5
5
|
|
6
|
-
if token.present? && user.is_a?(Spree
|
6
|
+
if token.present? && user.is_a?(Spree.user_class)
|
7
7
|
Spree::Order.incomplete.where(token_attr => token, user_id: nil).each do |order|
|
8
8
|
order.associate_user!(user)
|
9
9
|
end
|
data/config/routes.rb
CHANGED
@@ -21,7 +21,7 @@ Spree::Core::Engine.add_routes do
|
|
21
21
|
post '/password/recover' => 'user_passwords#create', :as => :reset_password
|
22
22
|
get '/password/change' => 'user_passwords#edit', :as => :edit_password
|
23
23
|
put '/password/change' => 'user_passwords#update', :as => :update_password
|
24
|
-
get '/confirm' => 'user_confirmations#show', :as => :confirmation
|
24
|
+
get '/confirm' => 'user_confirmations#show', :as => :confirmation
|
25
25
|
end
|
26
26
|
|
27
27
|
get '/checkout/registration' => 'checkout#registration', :as => :checkout_registration
|
@@ -42,6 +42,8 @@ Spree::Core::Engine.add_routes do
|
|
42
42
|
get '/login' => 'user_sessions#new', :as => :login
|
43
43
|
post '/login' => 'user_sessions#create', :as => :create_new_session
|
44
44
|
get '/logout' => 'user_sessions#destroy', :as => :logout
|
45
|
+
get '/password/recover' => 'user_passwords#new', :as => :recover_password
|
46
|
+
post '/password/recover' => 'user_passwords#create', :as => :reset_password
|
45
47
|
end
|
46
48
|
end
|
47
49
|
|
@@ -59,4 +59,20 @@ class Spree::Admin::UserSessionsController < Devise::SessionsController
|
|
59
59
|
"spree/layouts/admin"
|
60
60
|
end
|
61
61
|
end
|
62
|
+
|
63
|
+
def respond_to_on_destroy
|
64
|
+
# We actually need to hardcode this as Rails default responder doesn't
|
65
|
+
# support returning empty response on GET request
|
66
|
+
respond_to do |format|
|
67
|
+
format.all { head :no_content }
|
68
|
+
format.any(*navigational_formats) { redirect_to after_sign_out_redirect(resource_name) }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def after_sign_out_redirect(resource_or_scope)
|
73
|
+
scope = Devise::Mapping.find_scope!(resource_or_scope)
|
74
|
+
router_name = Devise.mappings[scope].router_name
|
75
|
+
context = router_name ? send(router_name) : self
|
76
|
+
context.respond_to?(:admin_login_path) ? context.admin_login_path : "/"
|
77
|
+
end
|
62
78
|
end
|
data/lib/spree/auth/engine.rb
CHANGED
@@ -12,7 +12,7 @@ module Spree
|
|
12
12
|
end
|
13
13
|
|
14
14
|
initializer "spree_auth_devise.set_user_class", after: :load_config_initializers do
|
15
|
-
Spree.user_class =
|
15
|
+
Spree.user_class = 'Spree::User' if Spree.user_class.blank? || Spree.user_class.to_s == 'Spree::LegacyUser'
|
16
16
|
end
|
17
17
|
|
18
18
|
initializer "spree_auth_devise.check_secret_token" do
|
@@ -29,19 +29,11 @@ module Spree
|
|
29
29
|
Rails.configuration.cache_classes ? require(c) : load(c)
|
30
30
|
end
|
31
31
|
if Spree::Auth::Engine.backend_available?
|
32
|
-
Rails.application.config.assets.precompile += [
|
33
|
-
'lib/assets/javascripts/spree/backend/spree_auth.js',
|
34
|
-
'lib/assets/javascripts/spree/backend/spree_auth.css'
|
35
|
-
]
|
36
32
|
Dir.glob(File.join(File.dirname(__FILE__), "../../controllers/backend/*/*/*_decorator*.rb")) do |c|
|
37
33
|
Rails.configuration.cache_classes ? require(c) : load(c)
|
38
34
|
end
|
39
35
|
end
|
40
36
|
if Spree::Auth::Engine.frontend_available?
|
41
|
-
Rails.application.config.assets.precompile += [
|
42
|
-
'lib/assets/javascripts/spree/frontend/spree_auth.js',
|
43
|
-
'lib/assets/javascripts/spree/frontend/spree_auth.css'
|
44
|
-
]
|
45
37
|
Dir.glob(File.join(File.dirname(__FILE__), "../../controllers/frontend/**/*_decorator*.rb")) do |c|
|
46
38
|
Rails.configuration.cache_classes ? require(c) : load(c)
|
47
39
|
end
|
@@ -33,12 +33,13 @@ RSpec.feature 'Admin - Sign In', type: :feature do
|
|
33
33
|
|
34
34
|
fill_in 'Email', with: user.email
|
35
35
|
fill_in 'Password', with: 'secret'
|
36
|
-
click_button 'Log in'
|
37
36
|
if Spree.version.to_f > 4.1
|
37
|
+
click_button 'Login'
|
38
38
|
within '.navbar .dropdown-menu' do
|
39
39
|
expect(page).to have_text 'admin@person.com'
|
40
40
|
end
|
41
41
|
else
|
42
|
+
click_button 'Log in'
|
42
43
|
within '.user-menu' do
|
43
44
|
expect(page).to have_text 'admin@person.com'
|
44
45
|
end
|
@@ -89,7 +89,7 @@ RSpec.feature 'Checkout', :js, type: :feature do
|
|
89
89
|
token_url_regex = /^http:\/\/www.example.com\/user\/spree_user\/password\/edit\?reset_password_token=(.*)$/
|
90
90
|
token = token_url_regex.match(reset_password_email.body.encoded)[1]
|
91
91
|
|
92
|
-
visit spree.edit_spree_user_password_path(reset_password_token: token).tr("%0D","")
|
92
|
+
visit spree.edit_spree_user_password_path(reset_password_token: token.strip).tr("%0D","")
|
93
93
|
fill_in 'Password', with: 'password'
|
94
94
|
fill_in 'Password Confirmation', with: 'password'
|
95
95
|
click_button 'Update'
|
@@ -1,13 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.feature 'Confirmation', type: :feature,
|
3
|
+
RSpec.feature 'Confirmation', type: :feature, confirmable: true do
|
4
4
|
before do
|
5
|
-
set_confirmable_option(true)
|
6
5
|
expect(Spree::UserMailer).to receive(:confirmation_instructions).with(anything, anything, { current_store_id: Spree::Store.current.id }).and_return(double(deliver: true))
|
7
6
|
end
|
8
7
|
|
9
|
-
after(:each) { set_confirmable_option(false) }
|
10
|
-
|
11
8
|
background do
|
12
9
|
ActionMailer::Base.default_url_options[:host] = 'http://example.com'
|
13
10
|
end
|
@@ -33,13 +33,14 @@ RSpec.feature 'Sign In', type: :feature do
|
|
33
33
|
|
34
34
|
fill_in 'Email', with: user.email
|
35
35
|
fill_in 'Password', with: user.password
|
36
|
-
click_button 'Log in'
|
37
36
|
|
38
37
|
if Spree.version.to_f > 4.1
|
38
|
+
click_button 'Login'
|
39
39
|
within '.navbar .dropdown-menu' do
|
40
40
|
expect(page).to have_text 'admin@person.com'
|
41
41
|
end
|
42
42
|
else
|
43
|
+
click_button 'Log in'
|
43
44
|
within '.user-menu' do
|
44
45
|
expect(page).to have_text 'admin@person.com'
|
45
46
|
end
|
data/spec/models/user_spec.rb
CHANGED
@@ -65,17 +65,48 @@ RSpec.describe Spree::User, type: :model do
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
describe "confirmable"
|
69
|
-
it "is confirmable if the confirmable option is enabled" do
|
70
|
-
set_confirmable_option(true)
|
68
|
+
describe "confirmable" do
|
69
|
+
it "is confirmable if the confirmable option is enabled", confirmable: true do
|
71
70
|
Spree::UserMailer.stub(:confirmation_instructions).with(anything, anything, { current_store_id: Spree::Store.current.id }).and_return(double(deliver: true))
|
72
71
|
expect(Spree.user_class.devise_modules).to include(:confirmable)
|
73
|
-
set_confirmable_option(false)
|
74
72
|
end
|
75
73
|
|
76
|
-
it "is not confirmable if the confirmable option is disabled" do
|
77
|
-
|
78
|
-
|
74
|
+
it "is not confirmable if the confirmable option is disabled", confirmable: false do
|
75
|
+
expect(Spree.user_class.devise_modules).not_to include(:confirmable)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#send_confirmation_instructions", retry: 2 do
|
80
|
+
let(:default_store) { Spree::Store.default }
|
81
|
+
|
82
|
+
context "when current store not exists" do
|
83
|
+
it 'takes default store and sends confirmation instruction', confirmable: true do
|
84
|
+
user = Spree.user_class.new
|
85
|
+
user.email = FFaker::Internet.email
|
86
|
+
user.password = user.password_confirmation = 'pass1234'
|
87
|
+
user.save
|
88
|
+
|
89
|
+
expect(Spree::UserMailer).to receive(:confirmation_instructions).with(
|
90
|
+
user, anything, { current_store_id: default_store.id }).and_return(double(deliver: true)
|
91
|
+
)
|
92
|
+
|
93
|
+
user.send_confirmation_instructions(nil)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context "when current store exists" do
|
98
|
+
it 'takes current store and sends confirmation instruction', confirmable: true do
|
99
|
+
user = Spree.user_class.new
|
100
|
+
user.email = FFaker::Internet.email
|
101
|
+
user.password = user.password_confirmation = 'pass1234'
|
102
|
+
user.save
|
103
|
+
|
104
|
+
expect(Spree::UserMailer).to receive(:confirmation_instructions).with(
|
105
|
+
user, anything, { current_store_id: store.id }).and_return(double(deliver: true)
|
106
|
+
)
|
107
|
+
|
108
|
+
user.send_confirmation_instructions(store)
|
109
|
+
end
|
79
110
|
end
|
80
111
|
end
|
81
112
|
end
|
@@ -1,11 +1,24 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
RSpec.configure do |config|
|
2
|
+
config.around do |example|
|
3
|
+
if example.metadata.key?(:confirmable)
|
4
|
+
old_user = Spree::User
|
5
|
+
|
6
|
+
begin
|
7
|
+
example.run
|
8
|
+
ensure
|
9
|
+
Spree.const_set('User', old_user)
|
10
|
+
end
|
11
|
+
else
|
12
|
+
example.run
|
13
|
+
end
|
6
14
|
end
|
7
|
-
end
|
8
15
|
|
9
|
-
|
10
|
-
|
16
|
+
config.before do |example|
|
17
|
+
if example.metadata.key?(:confirmable)
|
18
|
+
Spree::Auth::Config[:confirmable] = example.metadata[:confirmable]
|
19
|
+
|
20
|
+
Spree.send(:remove_const, :User)
|
21
|
+
load File.expand_path('../../../app/models/spree/user.rb', __FILE__)
|
22
|
+
end
|
23
|
+
end
|
11
24
|
end
|
data/spree_auth_devise.gemspec
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
# encoding: UTF-8
|
2
|
+
lib = File.expand_path('../lib/', __FILE__)
|
3
|
+
$LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
require 'spree/auth/version'
|
2
6
|
|
3
7
|
Gem::Specification.new do |s|
|
4
8
|
s.platform = Gem::Platform::RUBY
|
5
9
|
s.name = 'spree_auth_devise'
|
6
|
-
s.version =
|
10
|
+
s.version = Spree::Auth::VERSION
|
7
11
|
s.summary = 'Provides authentication and authorization services for use with Spree by using Devise and CanCan.'
|
8
12
|
s.description = s.summary
|
9
13
|
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_auth_devise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.3.
|
4
|
+
version: 4.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Schofield
|
8
8
|
- Spark Solutions
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-02-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: devise
|
@@ -95,6 +95,7 @@ extensions: []
|
|
95
95
|
extra_rdoc_files: []
|
96
96
|
files:
|
97
97
|
- ".circleci/config.yml"
|
98
|
+
- ".gem_release.yml"
|
98
99
|
- ".gitignore"
|
99
100
|
- ".rspec"
|
100
101
|
- ".travis.yml"
|
@@ -166,6 +167,7 @@ files:
|
|
166
167
|
- lib/spree/auth.rb
|
167
168
|
- lib/spree/auth/devise.rb
|
168
169
|
- lib/spree/auth/engine.rb
|
170
|
+
- lib/spree/auth/version.rb
|
169
171
|
- lib/spree/authentication_helpers.rb
|
170
172
|
- lib/spree/testing_support/auth_helpers.rb
|
171
173
|
- lib/spree/testing_support/checkout_helpers.rb
|
@@ -214,17 +216,16 @@ files:
|
|
214
216
|
- spec/support/configuration_helpers.rb
|
215
217
|
- spec/support/confirm_helpers.rb
|
216
218
|
- spec/support/email.rb
|
217
|
-
- spec/support/user_helper.rb
|
218
219
|
- spree_auth_devise.gemspec
|
219
220
|
homepage: https://spreecommerce.org
|
220
221
|
licenses:
|
221
222
|
- BSD-3-Clause
|
222
223
|
metadata:
|
223
224
|
bug_tracker_uri: https://github.com/spree/spree_auth_devise/issues
|
224
|
-
changelog_uri: https://github.com/spree/spree_auth_devise/releases/tag/v4.3.
|
225
|
+
changelog_uri: https://github.com/spree/spree_auth_devise/releases/tag/v4.3.3
|
225
226
|
documentation_uri: https://guides.spreecommerce.org/
|
226
|
-
source_code_uri: https://github.com/spree/spree_auth_devise/tree/v4.3.
|
227
|
-
post_install_message:
|
227
|
+
source_code_uri: https://github.com/spree/spree_auth_devise/tree/v4.3.3
|
228
|
+
post_install_message:
|
228
229
|
rdoc_options: []
|
229
230
|
require_paths:
|
230
231
|
- lib
|
@@ -240,8 +241,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
240
241
|
version: '0'
|
241
242
|
requirements:
|
242
243
|
- none
|
243
|
-
rubygems_version: 3.
|
244
|
-
signing_key:
|
244
|
+
rubygems_version: 3.1.4
|
245
|
+
signing_key:
|
245
246
|
specification_version: 4
|
246
247
|
summary: Provides authentication and authorization services for use with Spree by
|
247
248
|
using Devise and CanCan.
|
@@ -281,4 +282,3 @@ test_files:
|
|
281
282
|
- spec/support/configuration_helpers.rb
|
282
283
|
- spec/support/confirm_helpers.rb
|
283
284
|
- spec/support/email.rb
|
284
|
-
- spec/support/user_helper.rb
|
data/spec/support/user_helper.rb
DELETED