spree_auth_devise 4.4.1 → 4.5.0

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +177 -29
  3. data/Gemfile +12 -4
  4. data/README.md +6 -13
  5. data/app/models/spree/user.rb +3 -0
  6. data/config/initializers/devise.rb +1 -1
  7. data/config/routes.rb +33 -29
  8. data/lib/controllers/backend/spree/admin/user_passwords_controller.rb +6 -5
  9. data/lib/controllers/backend/spree/admin/user_sessions_controller.rb +1 -2
  10. data/lib/controllers/backend/spree/{admin → auth/admin}/base_controller_decorator.rb +2 -2
  11. data/lib/controllers/backend/spree/{admin → auth/admin}/orders/customer_details_controller_decorator.rb +2 -2
  12. data/lib/controllers/backend/spree/{admin → auth/admin}/orders_controller_decorator.rb +2 -2
  13. data/lib/controllers/backend/spree/auth/admin/resource_controller_decorator.rb +6 -0
  14. data/lib/controllers/frontend/spree/{checkout_controller_decorator.rb → auth/checkout_controller_decorator.rb} +4 -4
  15. data/lib/controllers/frontend/spree/user_passwords_controller.rb +2 -2
  16. data/lib/controllers/frontend/spree/user_registrations_controller.rb +1 -1
  17. data/lib/controllers/frontend/spree/user_sessions_controller.rb +1 -1
  18. data/lib/mailers/spree/user_mailer.rb +38 -0
  19. data/lib/spree/auth/configuration.rb +10 -0
  20. data/lib/spree/auth/engine.rb +14 -3
  21. data/lib/spree/auth/version.rb +1 -1
  22. data/lib/spree/authentication_helpers.rb +6 -6
  23. data/lib/spree/testing_support/auth_helpers.rb +8 -0
  24. data/lib/views/backend/spree/admin/user_passwords/edit.html.erb +18 -15
  25. data/lib/views/backend/spree/admin/user_passwords/new.html.erb +13 -15
  26. data/lib/views/backend/spree/admin/user_sessions/authorization_failure.html.erb +1 -1
  27. data/lib/views/backend/spree/admin/user_sessions/new.html.erb +12 -13
  28. data/lib/views/backend/spree/layouts/login.html.erb +1 -1
  29. data/{app/views → lib/views/emails}/spree/user_mailer/confirmation_instructions.html.erb +0 -0
  30. data/{app/views → lib/views/emails}/spree/user_mailer/confirmation_instructions.text.erb +0 -0
  31. data/{app/views → lib/views/emails}/spree/user_mailer/reset_password_instructions.html.erb +0 -0
  32. data/{app/views → lib/views/emails}/spree/user_mailer/reset_password_instructions.text.erb +0 -0
  33. data/lib/views/frontend/spree/user_registrations/new.html.erb +1 -1
  34. data/spec/controllers/spree/api/v2/storefront/passwords_controller_spec.rb +2 -2
  35. data/spec/controllers/spree/products_controller_spec.rb +1 -0
  36. data/spec/features/account_spec.rb +1 -0
  37. data/spec/features/admin/password_reset_spec.rb +1 -1
  38. data/spec/features/admin/sign_in_spec.rb +1 -1
  39. data/spec/features/admin/sign_out_spec.rb +2 -2
  40. data/spec/features/checkout_spec.rb +4 -3
  41. data/spec/features/confirmation_spec.rb +1 -1
  42. data/spec/features/sign_in_spec.rb +1 -1
  43. data/spec/mailers/user_mailer_spec.rb +3 -3
  44. data/spec/models/user_spec.rb +3 -3
  45. data/spec/requests/spree/api/v2/storefront/account_confirmation_spec.rb +0 -9
  46. data/spree_auth_devise.gemspec +1 -1
  47. metadata +18 -18
  48. data/app/mailers/spree/user_mailer.rb +0 -23
  49. data/app/models/spree/auth_configuration.rb +0 -8
  50. data/lib/controllers/backend/spree/admin/resource_controller_decorator.rb +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 565373eb7dea3f9d8862356201ff23400aae3c29f5b77114d223de0f146f4dda
4
- data.tar.gz: '05666786abb74456941e152e4217e10e9bd26ac8f10655a069ad499c39410352'
3
+ metadata.gz: a85c3ec56e4d12970bf8abf6f8365a688cea123c9be66d5e7d9581ca51468bbc
4
+ data.tar.gz: 6cd1ecf12edd93fc0ff505c9d21eadf139f218f1fd2be0870d64d68d833fa712
5
5
  SHA512:
6
- metadata.gz: 89bfa5e3bbf864449b1937682af334f85201f484f23360d5dc40834a9a0d31999c06380531eb883f547dfe34e1df8072fb45c4707918d3eeeefc972649af8438
7
- data.tar.gz: 39c55713494bd990c1cb8a7ff5f978227e8e62136564ae76c7f840b3028dcf30d86b8f6f2e94d52397aab7a66c2b0dc96804c4e3cd0b65454b9cd89a64c7a129
6
+ metadata.gz: 3b55e45f4cd927c1d3a0509f9c4d04ff60d03f1453cb2878911ddd4137834d338cf506db686572ab17e5bc99534dffbc822b36201c92bc6f6a58b1480d8a0041
7
+ data.tar.gz: 1edd8464cdef3be084845fb5eef65e33b9ac86c82e7fb19c35ab6acd29ad60e4a69114bf3a3917f14e150367b0df426c0a85b8340e5110e0443c3c41520f38d8
data/.circleci/config.yml CHANGED
@@ -1,41 +1,189 @@
1
- version: 2
1
+ version: 2.1
2
+
3
+ defaults: &defaults
4
+ environment: &environment
5
+ CIRCLE_TEST_REPORTS: /tmp/test-results
6
+ CIRCLE_ARTIFACTS: /tmp/test-artifacts
7
+ BUNDLE_JOBS: 4
8
+ BUNDLE_RETRY: 3
9
+ BUNDLE_PATH: ~/spree/vendor/bundle
10
+ working_directory: ~/spree
11
+ docker:
12
+ - image: &ruby_image circleci/ruby:2.7-node-browsers
13
+ - image: &redis_image circleci/redis:6.2-alpine
14
+
15
+ defaults_3_0: &defaults_3_0
16
+ <<: *defaults
17
+ docker:
18
+ - image: &ruby_3_0_image circleci/ruby:3.0-node-browsers
19
+ - image: *redis_image
20
+
21
+ run_tests: &run_tests
22
+ <<: *defaults
23
+ steps:
24
+ - checkout
25
+ - restore_cache:
26
+ keys:
27
+ - spree-auth-devise-bundle-v9-ruby-2-7-{{ .Branch }}
28
+ - spree-auth-devise-bundle-v9-ruby-2-7
29
+ - run:
30
+ name: Install libvips
31
+ command: sudo apt-get install libvips
32
+ - run:
33
+ name: Set bundle path
34
+ command: bundle config --local path vendor/bundle
35
+ - run:
36
+ name: Ensure bundle Install
37
+ command: |
38
+ bundle check || bundle install
39
+ - run:
40
+ name: Create test app
41
+ command: |
42
+ bundle exec rake test_app
43
+ - run:
44
+ name: Run Rspec
45
+ command: |
46
+ TESTFILES=$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
47
+ bundle exec rspec --format documentation \
48
+ --format RspecJunitFormatter \
49
+ -o ~/rspec/rspec.xml \
50
+ -- ${TESTFILES}
51
+ - store_test_results:
52
+ path: ~/rspec
53
+ - store_artifacts:
54
+ path: tmp/capybara
55
+
56
+ run_tests_3_0: &run_tests_3_0
57
+ <<: *defaults_3_0
58
+ steps:
59
+ - checkout
60
+ - restore_cache:
61
+ keys:
62
+ - spree-auth-devise-bundle-v9-ruby-3-0-{{ .Branch }}
63
+ - spree-auth-devise-bundle-v9-ruby-3-0
64
+ - run:
65
+ name: Install libvips
66
+ command: sudo apt-get install libvips
67
+ - run:
68
+ name: Set bundle path
69
+ command: bundle config --local path vendor/bundle
70
+ - run:
71
+ name: Ensure bundle Install
72
+ command: |
73
+ bundle check || bundle install
74
+ - run:
75
+ name: Create test app
76
+ command: |
77
+ bundle exec rake test_app
78
+ - run:
79
+ name: Run Rspec
80
+ command: |
81
+ TESTFILES=$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
82
+ bundle exec rspec --format documentation \
83
+ --format RspecJunitFormatter \
84
+ -o ~/rspec/rspec.xml \
85
+ -- ${TESTFILES}
86
+ - store_test_results:
87
+ path: ~/rspec
88
+ - store_artifacts:
89
+ path: tmp/capybara
2
90
 
3
91
  jobs:
4
- update_staging_repository:
5
- docker:
6
- - image: circleci/ruby:2.6.3
92
+ bundle:
93
+ <<: *defaults
7
94
  steps:
8
- - add_ssh_keys:
9
- fingerprints:
10
- - 54:50:5e:4e:80:6d:2e:26:43:c6:99:bd:39:b2:71:dc
11
- - run: mkdir -p ~/.ssh
12
- - run: ssh-keyscan -H github.com >> ~/.ssh/known_hosts
13
- - run: ssh-add -D
14
- - run: ssh-add ~/.ssh/id_rsa_54505e4e806d2e2643c699bd39b271dc
15
- - run: git clone -b master git@github.com:spark-solutions/spree-designs.git
16
- - run: gem install bundler -v 1.17.3
95
+ - checkout
96
+ - restore_cache:
97
+ keys:
98
+ - spree-auth-devise-bundle-v9-ruby-2-7-{{ .Branch }}
99
+ - spree-auth-devise-bundle-v9-ruby-2-7
17
100
  - run:
18
- command: bundle update spree_auth_devise
19
- working_directory: ~/project/spree-designs
101
+ name: Install libvips
102
+ command: sudo apt-get install libvips
20
103
  - run:
21
- command: |
22
- git config user.name 'AutoDeploy'
23
- git config user.email 'autodeploy@sparksolutions.co'
24
- working_directory: ~/project/spree-designs
104
+ name: Set bundle path
105
+ command: bundle config --local path vendor/bundle
25
106
  - run:
107
+ name: Bundle Install
26
108
  command: |
27
- git add -A
28
- git commit -m "Auto-commit v#${CIRCLE_BUILD_NUM}"
29
- working_directory: ~/project/spree-designs
109
+ bundle check || bundle install
110
+ - save_cache:
111
+ paths:
112
+ - vendor/bundle
113
+ key: spree-auth-devise-bundle-v9-ruby-2-7-{{ checksum "Gemfile.lock" }}
114
+
115
+ bundle_ruby_3_0:
116
+ <<: *defaults_3_0
117
+ steps:
118
+ - checkout
119
+ - restore_cache:
120
+ keys:
121
+ - spree-auth-devise-bundle-v9-ruby-3-0-{{ .Branch }}
122
+ - spree-auth-devise-bundle-v9-ruby-3-0
123
+ - run:
124
+ name: Install libvips
125
+ command: sudo apt-get install libvips
30
126
  - run:
31
- command: git push origin master
32
- working_directory: ~/project/spree-designs
127
+ name: Set bundle path
128
+ command: bundle config --local path vendor/bundle
129
+ - run:
130
+ name: Bundle Install
131
+ command: |
132
+ bundle check || bundle install
133
+ - save_cache:
134
+ paths:
135
+ - vendor/bundle
136
+ key: spree-auth-devise-bundle-v9-ruby-3-0-{{ checksum "Gemfile.lock" }}
137
+
138
+ tests_postgres: &tests_postgres
139
+ <<: *run_tests
140
+ environment: &postgres_environment
141
+ <<: *environment
142
+ DB: postgres
143
+ DB_HOST: localhost
144
+ DB_USERNAME: postgres
145
+ docker:
146
+ - image: *ruby_image
147
+ - image: *redis_image
148
+ - image: &postgres_image circleci/postgres:12-alpine
149
+ environment:
150
+ POSTGRES_USER: postgres
151
+
152
+ tests_postgres_ruby_3_0: &tests_postgres_ruby_3_0
153
+ <<: *run_tests_3_0
154
+ environment:
155
+ <<: *postgres_environment
156
+ docker:
157
+ - image: *ruby_3_0_image
158
+ - image: *postgres_image
159
+ - image: *redis_image
160
+
161
+ tests_mysql: &tests_mysql
162
+ <<: *run_tests
163
+ environment: &mysql_environment
164
+ <<: *environment
165
+ DB: mysql
166
+ DB_HOST: 127.0.0.1
167
+ DB_USERNAME: root
168
+ COVERAGE: true
169
+ COVERAGE_DIR: /tmp/workspace/simplecov
170
+ docker:
171
+ - image: *ruby_image
172
+ - image: *redis_image
173
+ - image: &mysql_image circleci/mysql:8-ram
33
174
 
34
175
  workflows:
35
176
  version: 2
36
- update_staging_repository:
177
+ main:
37
178
  jobs:
38
- - update_staging_repository:
39
- filters:
40
- branches:
41
- only: master
179
+ - bundle
180
+ - bundle_ruby_3_0
181
+ - tests_postgres:
182
+ requires:
183
+ - bundle
184
+ - tests_postgres_ruby_3_0:
185
+ requires:
186
+ - bundle_ruby_3_0
187
+ - tests_mysql:
188
+ requires:
189
+ - bundle
data/Gemfile CHANGED
@@ -1,10 +1,18 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'rails-controller-testing'
4
- gem 'spree', '~> 4.3.0'
5
- gem 'spree_backend', '~> 4.3.0'
6
- gem 'spree_frontend', '~> 4.3.0'
7
- gem 'spree_emails', '~> 4.3.0'
4
+ gem 'devise', github: 'heartcombo/devise', branch: 'main'
5
+ gem 'spree', github: 'spree/spree', branch: 'main'
6
+ gem 'spree_backend', github: 'spree/spree_backend', branch: 'main'
7
+ gem 'spree_emails', github: 'spree/spree', branch: 'main'
8
+ gem 'spree_frontend', github: 'spree/spree_legacy_frontend', branch: 'main'
9
+ gem 'rspec_junit_formatter', '~> 0.4.1'
10
+
11
+ if ENV['DB'] == 'mysql'
12
+ gem 'mysql2'
13
+ else
14
+ gem 'pg', '~> 1.1'
15
+ end
8
16
 
9
17
  gem 'pry', '~> 0.14.1'
10
18
  gemspec
data/README.md CHANGED
@@ -1,10 +1,14 @@
1
1
  # Spree Auth (Devise)
2
2
 
3
- [![Build Status](https://travis-ci.com/spree/spree_auth_devise.svg?branch=main)](https://travis-ci.org/spree/spree_auth_devise)
4
- [![Code Climate](https://codeclimate.com/github/spree/spree_auth_devise/badges/gpa.svg)](https://codeclimate.com/github/spree/spree_auth_devise)
3
+ [![CircleCI](https://circleci.com/gh/spree/spree_auth_devise/tree/main.svg?style=svg)](https://circleci.com/gh/spree/spree_auth_devise/tree/main)
5
4
 
6
5
  Provides authentication services for [Spree](https://spreecommerce.org), using the [Devise](https://github.com/plataformatec/devise) gem.
7
6
 
7
+ ## Developed by
8
+
9
+ [![Vendo](https://assets-global.website-files.com/6230c485f2c32ea1b0daa438/623372f40a8c54ca9aea34e8_vendo%202.svg)](https://getvendo.com?utm_source=spree_auth_github)
10
+
11
+ > All-in-one platform for all your Marketplace and B2B eCommerce needs. [Start your 30-day free trial](https://e98esoirr8c.typeform.com/contactvendo?typeform-source=spree_auth_github)
8
12
 
9
13
  ## Installation
10
14
 
@@ -131,14 +135,3 @@ You need to do a quick one-time creation of a test application and then you can
131
135
  Then run the rspec tests.
132
136
 
133
137
  bundle exec rspec
134
-
135
- About Spark Solutions
136
- ----------------------
137
- [![Spark Solutions](http://sparksolutions.co/wp-content/uploads/2015/01/logo-ss-tr-221x100.png)][spark]
138
-
139
- Spree Auth Devise is maintained by [Spark Solutions Sp. z o.o.][spark].
140
-
141
- We are passionate about open source software.
142
- We are [available for hire][spark].
143
-
144
- [spark]:http://sparksolutions.co?utm_source=github
@@ -3,6 +3,9 @@ module Spree
3
3
  include UserAddress
4
4
  include UserMethods
5
5
  include UserPaymentSource
6
+ if defined?(Spree::Metadata)
7
+ include Metadata
8
+ end
6
9
 
7
10
  devise :database_authenticatable, :registerable, :recoverable,
8
11
  :rememberable, :trackable, :encryptable, encryptor: 'authlogic_sha512'
@@ -6,7 +6,7 @@ Devise.setup do |config|
6
6
  config.mailer_sender = 'please-change-me@config-initializers-devise.com'
7
7
 
8
8
  # Configure the class responsible to send e-mails.
9
- config.mailer = 'Spree::UserMailer'
9
+ config.mailer = 'Spree::UserMailer' if defined?(Spree::Emails)
10
10
 
11
11
  # ==> ORM configuration
12
12
  # Load and configure the ORM. Supports :active_record (default) and
data/config/routes.rb CHANGED
@@ -1,15 +1,13 @@
1
1
  Spree::Core::Engine.add_routes do
2
2
  devise_for :spree_user,
3
- class_name: Spree.user_class.to_s,
4
- controllers: { sessions: 'spree/user_sessions',
5
- registrations: 'spree/user_registrations',
6
- passwords: 'spree/user_passwords',
7
- confirmations: 'spree/user_confirmations' },
8
- skip: [:unlocks, :omniauth_callbacks],
9
- path_names: { sign_out: 'logout' },
10
- path_prefix: :user
11
-
12
- resources :users, only: [:edit, :update]
3
+ class_name: Spree.user_class.to_s,
4
+ controllers: { sessions: 'spree/user_sessions',
5
+ registrations: 'spree/user_registrations',
6
+ passwords: 'spree/user_passwords',
7
+ confirmations: 'spree/user_confirmations' },
8
+ skip: [:unlocks, :omniauth_callbacks],
9
+ path_names: { sign_out: 'logout' },
10
+ path_prefix: :user
13
11
 
14
12
  devise_scope :spree_user do
15
13
  get '/login' => 'user_sessions#new', :as => :login
@@ -24,26 +22,32 @@ Spree::Core::Engine.add_routes do
24
22
  get '/confirm' => 'user_confirmations#show', :as => :confirmation
25
23
  end
26
24
 
27
- get '/checkout/registration' => 'checkout#registration', :as => :checkout_registration
28
- put '/checkout/registration' => 'checkout#update_registration', :as => :update_checkout_registration
29
-
30
- resource :account, controller: 'users'
25
+ if Spree::Core::Engine.frontend_available?
26
+ resources :users, only: [:edit, :update]
27
+ get '/checkout/registration' => 'checkout#registration', :as => :checkout_registration
28
+ put '/checkout/registration' => 'checkout#update_registration', :as => :update_checkout_registration
29
+ resource :account, controller: 'users'
30
+ end
31
31
 
32
- namespace :admin, path: Spree.admin_path do
33
- devise_for :spree_user,
34
- class_name: Spree.user_class.to_s,
35
- controllers: { sessions: 'spree/admin/user_sessions',
36
- passwords: 'spree/admin/user_passwords' },
37
- skip: [:unlocks, :omniauth_callbacks, :registrations],
38
- path_names: { sign_out: 'logout' },
39
- path_prefix: :user
40
- devise_scope :spree_user do
41
- get '/authorization_failure', to: 'user_sessions#authorization_failure', as: :unauthorized
42
- get '/login' => 'user_sessions#new', :as => :login
43
- post '/login' => 'user_sessions#create', :as => :create_new_session
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
32
+ if Spree.respond_to?(:admin_path) && Spree::Core::Engine.backend_available?
33
+ namespace :admin, path: Spree.admin_path do
34
+ devise_for :spree_user,
35
+ class_name: Spree.user_class.to_s,
36
+ controllers: { sessions: 'spree/admin/user_sessions',
37
+ passwords: 'spree/admin/user_passwords' },
38
+ skip: [:unlocks, :omniauth_callbacks, :registrations],
39
+ path_names: { sign_out: 'logout' },
40
+ path_prefix: :user
41
+ devise_scope :spree_user do
42
+ get '/authorization_failure', to: 'user_sessions#authorization_failure', as: :unauthorized
43
+ get '/login' => 'user_sessions#new', :as => :login
44
+ post '/login' => 'user_sessions#create', :as => :create_new_session
45
+ get '/logout' => 'user_sessions#destroy', :as => :logout
46
+ get '/password/recover' => 'user_passwords#new', :as => :recover_password
47
+ post '/password/recover' => 'user_passwords#create', :as => :reset_password
48
+ get '/password/change' => 'user_passwords#edit', :as => :edit_password
49
+ put '/password/change' => 'user_passwords#update', :as => :update_password
50
+ end
47
51
  end
48
52
  end
49
53
 
@@ -2,11 +2,10 @@ class Spree::Admin::UserPasswordsController < Devise::PasswordsController
2
2
  helper 'spree/base'
3
3
 
4
4
  include Spree::Core::ControllerHelpers::Auth
5
- include Spree::Core::ControllerHelpers::Common
6
5
  include Spree::Core::ControllerHelpers::Store
7
6
 
8
7
  helper 'spree/admin/navigation'
9
- layout 'spree/layouts/admin'
8
+ layout 'spree/layouts/login'
10
9
 
11
10
  # Overridden due to bug in Devise.
12
11
  # respond_with resource, :location => new_session_path(resource_name)
@@ -16,13 +15,13 @@ class Spree::Admin::UserPasswordsController < Devise::PasswordsController
16
15
  # respond_with resource, :location => spree.login_path
17
16
  #
18
17
  def create
19
- self.resource = resource_class.send_reset_password_instructions(params[resource_name])
18
+ self.resource = resource_class.send_reset_password_instructions(params[resource_name], current_store)
20
19
 
21
20
  if resource.errors.empty?
22
21
  set_flash_message(:notice, :send_instructions) if is_navigational_format?
23
22
  respond_with resource, location: spree.admin_login_path
24
23
  else
25
- respond_with_navigational(resource) { render :new }
24
+ respond_with_navigational(resource) { render :new, status: :unprocessable_entity }
26
25
  end
27
26
  end
28
27
 
@@ -31,8 +30,10 @@ class Spree::Admin::UserPasswordsController < Devise::PasswordsController
31
30
  # Fixes spree/spree#2190.
32
31
  def update
33
32
  if params[:spree_user][:password].blank?
33
+ self.resource = resource_class.new
34
+ resource.reset_password_token = params[:spree_user][:reset_password_token]
34
35
  set_flash_message(:error, :cannot_be_blank)
35
- render :edit
36
+ render :edit, status: :unprocessable_entity
36
37
  else
37
38
  super
38
39
  end
@@ -2,7 +2,6 @@ class Spree::Admin::UserSessionsController < Devise::SessionsController
2
2
  helper 'spree/base'
3
3
 
4
4
  include Spree::Core::ControllerHelpers::Auth
5
- include Spree::Core::ControllerHelpers::Common
6
5
  include Spree::Core::ControllerHelpers::Store
7
6
 
8
7
  helper 'spree/admin/navigation'
@@ -24,7 +23,7 @@ class Spree::Admin::UserSessionsController < Devise::SessionsController
24
23
  end
25
24
  else
26
25
  flash.now[:error] = t('devise.failure.invalid')
27
- render :new
26
+ render :new, status: :unprocessable_entity
28
27
  end
29
28
  end
30
29
 
@@ -1,4 +1,4 @@
1
- module Spree::Admin::BaseControllerDecorator
1
+ module Spree::Auth::Admin::BaseControllerDecorator
2
2
  # Redirect as appropriate when an access request fails. The default action is to redirect to the login screen.
3
3
  # Override this method in your controllers if you want to have special behavior in case the user is not authorized
4
4
  # to access the requested action. For example, a popup window might simply close itself.
@@ -22,4 +22,4 @@ module Spree::Admin::BaseControllerDecorator
22
22
  nil
23
23
  end
24
24
  end
25
- Spree::Admin::BaseController.prepend(Spree::Admin::BaseControllerDecorator)
25
+ ::Spree::Admin::BaseController.prepend(Spree::Auth::Admin::BaseControllerDecorator)
@@ -1,4 +1,4 @@
1
- module Spree::Admin::Orders::CustomerDetailsControllerDecorator
1
+ module Spree::Auth::Admin::Orders::CustomerDetailsControllerDecorator
2
2
 
3
3
  def self.prepended(base)
4
4
  base.before_action :check_authorization
@@ -17,4 +17,4 @@ module Spree::Admin::Orders::CustomerDetailsControllerDecorator
17
17
  authorize! action, resource, session[:access_token]
18
18
  end
19
19
  end
20
- Spree::Admin::Orders::CustomerDetailsController.prepend(Spree::Admin::Orders::CustomerDetailsControllerDecorator)
20
+ Spree::Admin::Orders::CustomerDetailsController.prepend(Spree::Auth::Admin::Orders::CustomerDetailsControllerDecorator)
@@ -1,4 +1,4 @@
1
- module Spree::Admin::OrdersControllerDecorator
1
+ module Spree::Auth::Admin::OrdersControllerDecorator
2
2
 
3
3
  def self.prepended(base)
4
4
  base.before_action :check_authorization
@@ -22,4 +22,4 @@ module Spree::Admin::OrdersControllerDecorator
22
22
  end
23
23
  end
24
24
  end
25
- Spree::Admin::OrdersController.prepend(Spree::Admin::OrdersControllerDecorator)
25
+ Spree::Admin::OrdersController.prepend(Spree::Auth::Admin::OrdersControllerDecorator)
@@ -0,0 +1,6 @@
1
+ module Spree::Auth::Admin::ResourceControllerDecorator
2
+ def self.prepended(base)
3
+ base.rescue_from CanCan::AccessDenied, with: :unauthorized
4
+ end
5
+ end
6
+ Spree::Admin::ResourceController.prepend(Spree::Auth::Admin::ResourceControllerDecorator)
@@ -1,12 +1,12 @@
1
1
  require 'spree/core/validators/email' if Spree.version.to_f < 3.5
2
- module Spree::CheckoutControllerDecorator
2
+ module Spree::Auth::CheckoutControllerDecorator
3
3
  def self.prepended(base)
4
4
  base.before_action :check_authorization
5
5
  base.before_action :check_registration, except: [:registration, :update_registration]
6
6
  end
7
7
 
8
8
  def registration
9
- @user = Spree.user_class.new
9
+ @user = Spree.user_class.new
10
10
  @title = Spree.t(:registration)
11
11
  end
12
12
 
@@ -16,7 +16,7 @@ module Spree::CheckoutControllerDecorator
16
16
  else
17
17
  flash[:error] = t(:email_is_invalid, scope: [:errors, :messages])
18
18
  @user = Spree.user_class.new
19
- render 'registration'
19
+ render 'registration', status: :unprocessable_entity
20
20
  end
21
21
  end
22
22
 
@@ -42,4 +42,4 @@ module Spree::CheckoutControllerDecorator
42
42
  redirect_to spree.checkout_registration_path
43
43
  end
44
44
  end
45
- Spree::CheckoutController.prepend(Spree::CheckoutControllerDecorator)
45
+ Spree::CheckoutController.prepend(Spree::Auth::CheckoutControllerDecorator)
@@ -33,7 +33,7 @@ class Spree::UserPasswordsController < Devise::PasswordsController
33
33
  set_flash_message(:notice, :send_instructions) if is_navigational_format?
34
34
  respond_with resource, location: spree.login_path
35
35
  else
36
- respond_with_navigational(resource) { render :new }
36
+ respond_with_navigational(resource) { render :new, status: :unprocessable_entity }
37
37
  end
38
38
  end
39
39
 
@@ -45,7 +45,7 @@ class Spree::UserPasswordsController < Devise::PasswordsController
45
45
  self.resource = resource_class.new
46
46
  resource.reset_password_token = params[:spree_user][:reset_password_token]
47
47
  set_flash_message(:error, :cannot_be_blank)
48
- render :edit
48
+ render :edit, status: :unprocessable_entity
49
49
  else
50
50
  super
51
51
  end
@@ -48,7 +48,7 @@ class Spree::UserRegistrationsController < Devise::RegistrationsController
48
48
  end
49
49
  else
50
50
  clean_up_passwords(resource)
51
- render :new
51
+ render :new, status: :unprocessable_entity
52
52
  end
53
53
  end
54
54
 
@@ -38,7 +38,7 @@ class Spree::UserSessionsController < Devise::SessionsController
38
38
  respond_to do |format|
39
39
  format.html {
40
40
  flash.now[:error] = t('devise.failure.invalid')
41
- render :new
41
+ render :new, status: :unprocessable_entity
42
42
  }
43
43
  format.js {
44
44
  render json: { error: t('devise.failure.invalid') }, status: :unprocessable_entity
@@ -0,0 +1,38 @@
1
+ module Spree
2
+ class UserMailer < BaseMailer
3
+ def reset_password_instructions(user, token, opts = {})
4
+ @user = user
5
+ @current_store = current_store(opts)
6
+ @edit_password_reset_url = edit_password_url(token, @current_store)
7
+
8
+ mail to: user.email, from: from_address, reply_to: reply_to_address,
9
+ subject: @current_store.name + ' ' + I18n.t(:subject, scope: [:devise, :mailer, :reset_password_instructions]),
10
+ store_url: @current_store.url
11
+ end
12
+
13
+ def confirmation_instructions(user, token, opts = {})
14
+ @user = user
15
+ @current_store = current_store(opts)
16
+ @confirmation_url = spree.confirmation_url(confirmation_token: token, host: @current_store.url)
17
+ @email = user.email
18
+
19
+ mail to: user.email, from: from_address, reply_to: reply_to_address,
20
+ subject: @current_store.name + ' ' + I18n.t(:subject, scope: [:devise, :mailer, :confirmation_instructions]),
21
+ store_url: @current_store.url
22
+ end
23
+
24
+ protected
25
+
26
+ def edit_password_url(token, store)
27
+ if frontend_available?
28
+ spree.edit_password_url(reset_password_token: token, host: store.url)
29
+ else
30
+ spree.admin_edit_password_url(reset_password_token: token, host: store.url)
31
+ end
32
+ end
33
+
34
+ def current_store(opts = {})
35
+ @current_store = Spree::Store.find_by(id: opts[:current_store_id]) || Spree::Store.default
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,10 @@
1
+ module Spree
2
+ module Auth
3
+ class Configuration < Preferences::Configuration
4
+ preference :registration_step, :boolean, default: true
5
+ preference :signout_after_password_change, :boolean, default: true
6
+ preference :confirmable, :boolean, default: false
7
+ preference :validatable, :boolean, default: true
8
+ end
9
+ end
10
+ end