spree_auth_devise 4.0.0.rc2 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +41 -0
  3. data/.gitignore +1 -0
  4. data/.travis.yml +3 -21
  5. data/Appraisals +3 -19
  6. data/Gemfile +2 -2
  7. data/README.md +3 -12
  8. data/app/controllers/spree/user_confirmations_controller.rb +24 -0
  9. data/app/controllers/spree/user_passwords_controller.rb +2 -0
  10. data/app/controllers/spree/user_registrations_controller.rb +27 -1
  11. data/app/controllers/spree/user_sessions_controller.rb +23 -1
  12. data/app/views/spree/user_passwords/edit.html.erb +20 -17
  13. data/app/views/spree/user_passwords/new.html.erb +17 -15
  14. data/app/views/spree/user_registrations/new.html.erb +12 -17
  15. data/app/views/spree/user_sessions/new.html.erb +11 -12
  16. data/config/locales/en.yml +3 -1
  17. data/config/routes.rb +2 -3
  18. data/db/migrate/20120203010234_add_reset_password_sent_at_to_spree_users.rb +2 -2
  19. data/gemfiles/{spree_3_5.gemfile → spree_4_1.gemfile} +1 -1
  20. data/lib/controllers/frontend/spree/checkout_controller_decorator.rb +2 -2
  21. data/lib/controllers/frontend/spree/users_controller.rb +11 -6
  22. data/lib/generators/spree/auth/install/install_generator.rb +0 -4
  23. data/lib/spree/testing_support/auth_helpers.rb +36 -0
  24. data/lib/spree/testing_support/checkout_helpers.rb +24 -0
  25. data/lib/views/backend/spree/admin/user_passwords/new.html.erb +1 -1
  26. data/lib/views/backend/spree/admin/user_sessions/new.html.erb +1 -1
  27. data/spec/controllers/spree/admin/orders_controller_spec.rb +1 -1
  28. data/spec/controllers/spree/admin/user_sessions_controller_spec.rb +1 -1
  29. data/spec/controllers/spree/checkout_controller_spec.rb +15 -16
  30. data/spec/controllers/spree/products_controller_spec.rb +1 -1
  31. data/spec/controllers/spree/user_passwords_controller_spec.rb +4 -4
  32. data/spec/controllers/spree/user_registrations_controller_spec.rb +8 -8
  33. data/spec/controllers/spree/user_sessions_controller_spec.rb +17 -17
  34. data/spec/controllers/spree/users_controller_spec.rb +4 -4
  35. data/spec/features/account_spec.rb +10 -8
  36. data/spec/features/admin/password_reset_spec.rb +2 -4
  37. data/spec/features/admin/sign_in_spec.rb +5 -7
  38. data/spec/features/admin/sign_out_spec.rb +1 -1
  39. data/spec/features/admin_permissions_spec.rb +1 -1
  40. data/spec/features/change_email_spec.rb +1 -7
  41. data/spec/features/checkout_spec.rb +38 -63
  42. data/spec/features/confirmation_spec.rb +3 -5
  43. data/spec/features/order_spec.rb +9 -15
  44. data/spec/features/password_reset_spec.rb +2 -4
  45. data/spec/features/sign_in_spec.rb +7 -9
  46. data/spec/features/sign_out_spec.rb +16 -23
  47. data/spec/features/sign_up_spec.rb +6 -4
  48. data/spec/mailers/user_mailer_spec.rb +1 -1
  49. data/spec/models/user_spec.rb +5 -5
  50. data/spec/requests/spree/frontend/user_update_spec.rb +42 -0
  51. data/spec/spec_helper.rb +16 -0
  52. data/spec/support/add_to_cart.rb +11 -4
  53. data/spec/support/authentication_helpers.rb +1 -1
  54. data/spec/support/capybara.rb +15 -8
  55. data/spree_auth_devise.gemspec +14 -10
  56. metadata +104 -74
  57. data/app/overrides/auth_shared_login_bar.rb +0 -6
  58. data/app/views/spree/shared/_login.html.erb +0 -18
  59. data/app/views/spree/shared/_user_form.html.erb +0 -17
  60. data/gemfiles/spree_3_2.gemfile +0 -8
  61. data/gemfiles/spree_3_7.gemfile +0 -9
  62. data/gemfiles/spree_4_0.gemfile +0 -8
  63. data/lib/assets/javascripts/spree/backend/spree_auth.js.erb +0 -1
  64. data/lib/assets/javascripts/spree/frontend/account.js +0 -8
  65. data/lib/assets/javascripts/spree/frontend/spree_auth.js.erb +0 -2
  66. data/lib/assets/stylesheets/spree/backend/spree_auth.css.erb +0 -3
  67. data/lib/assets/stylesheets/spree/frontend/spree_auth.css.erb +0 -3
  68. data/lib/controllers/frontend/spree/store_controller_decorator.rb +0 -7
  69. data/lib/views/frontend/spree/checkout/_new_user.html.erb +0 -20
  70. data/lib/views/frontend/spree/checkout/registration.html.erb +0 -25
  71. data/lib/views/frontend/spree/shared/_link_to_account.html.erb +0 -6
  72. data/lib/views/frontend/spree/users/edit.html.erb +0 -17
  73. data/lib/views/frontend/spree/users/show.html.erb +0 -48
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3bd194ed9eb91f84ac2e23e55550e5ad19620c53bdd9d1be39bb0cc21ba2412d
4
- data.tar.gz: e5cbde0bc175fad0cea460e53eaa1ac6216412044d9557c7a964f4f00186c147
3
+ metadata.gz: 46ff8af21fa16c063b0f61f5993e37f93072587b1e663e58089b2ea0a028b51b
4
+ data.tar.gz: 6d7fa7607dd17ff3b6c5231bd8295c5fef51ea7620e1e459d199b39b42649858
5
5
  SHA512:
6
- metadata.gz: da728a02b621de5f0d2f46d09b09e7e3886c62eb4856ed08a991fa6b8117cb6d57432f6f9cdb5348f9e105cfcc60ffe61b0795e840c1d716ed0e72af6dd38224
7
- data.tar.gz: 1c43394077a9847aed202a49a103830fbd0da359be5c4c120d19e57f395e8d018aa63a7b55186681b468458949715e9d1853545a8e90d0fed286a85e8414734e
6
+ metadata.gz: 1eefe313a0b7cd621e9192d483624541790292872576927da6089350aaa14352faa00e0b2dd8f36d2920b9faf4776cc5287df6c5308d2bce9111ec95228f26a1
7
+ data.tar.gz: 3e941ccde2788291ec91709149786c03dab905cf142811186a43949c3ce6549b89306e8ceb7692070dbb1a7a92ef306ae0adc808d62bb18d1ad27404afbc24f0
@@ -0,0 +1,41 @@
1
+ version: 2
2
+
3
+ jobs:
4
+ update_staging_repository:
5
+ docker:
6
+ - image: circleci/ruby:2.6.3
7
+ 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
17
+ - run:
18
+ command: bundle update spree_auth_devise
19
+ working_directory: ~/project/spree-designs
20
+ - run:
21
+ command: |
22
+ git config user.name 'AutoDeploy'
23
+ git config user.email 'autodeploy@sparksolutions.co'
24
+ working_directory: ~/project/spree-designs
25
+ - run:
26
+ command: |
27
+ git add -A
28
+ git commit -m "Auto-commit v#${CIRCLE_BUILD_NUM}"
29
+ working_directory: ~/project/spree-designs
30
+ - run:
31
+ command: git push origin master
32
+ working_directory: ~/project/spree-designs
33
+
34
+ workflows:
35
+ version: 2
36
+ update_staging_repository:
37
+ jobs:
38
+ - update_staging_repository:
39
+ filters:
40
+ branches:
41
+ only: master
data/.gitignore CHANGED
@@ -20,3 +20,4 @@ public/spree
20
20
  .ruby-gemset
21
21
  gemfiles/*.gemfile.lock
22
22
  *.gem
23
+ .bundle
data/.travis.yml CHANGED
@@ -17,36 +17,18 @@ language: ruby
17
17
 
18
18
  rvm:
19
19
  - 2.5.1
20
- - 2.4.4
21
- - 2.3.7
20
+ # - 2.6.5
22
21
 
23
22
  gemfile:
24
- - gemfiles/spree_3_2.gemfile
25
- - gemfiles/spree_3_5.gemfile
26
- - gemfiles/spree_3_7.gemfile
27
- - gemfiles/spree_4_0.gemfile
23
+ - gemfiles/spree_4_1.gemfile
28
24
  - gemfiles/spree_master.gemfile
29
25
 
30
26
  matrix:
31
27
  allow_failures:
32
28
  - gemfile: gemfiles/spree_master.gemfile
33
- exclude:
34
- - rvm: 2.3.7
35
- gemfile: gemfiles/spree_4_0.gemfile
36
- - rvm: 2.4.4
37
- gemfile: gemfiles/spree_4_0.gemfile
38
- - rvm: 2.3.7
39
- gemfile: gemfiles/spree_master.gemfile
40
- - rvm: 2.4.4
41
- gemfile: gemfiles/spree_master.gemfile
42
- - rvm: 2.5.1
43
- gemfile: gemfiles/spree_3_2.gemfile
44
- - rvm: 2.5.1
45
- gemfile: gemfiles/spree_3_2.gemfile
46
- - rvm: 2.5.1
47
- gemfile: gemfiles/spree_3_5.gemfile
48
29
 
49
30
  before_install:
31
+ - gem update bundler
50
32
  - mysql -u root -e "GRANT ALL ON *.* TO 'travis'@'%';"
51
33
  - wget -N https://chromedriver.storage.googleapis.com/2.35/chromedriver_linux64.zip -P ~/
52
34
  - unzip ~/chromedriver_linux64.zip -d ~/
data/Appraisals CHANGED
@@ -1,25 +1,9 @@
1
- appraise 'spree-3-2' do
2
- gem 'spree', '~> 3.2.0'
3
- gem 'rails-controller-testing'
4
- end
5
-
6
- appraise 'spree-3-5' do
7
- gem 'spree', '~> 3.5.0'
8
- gem 'rails-controller-testing'
9
- end
10
-
11
- appraise 'spree-3-7' do
12
- gem 'sass-rails'
13
- gem 'spree', '~> 3.7.0.rc3'
14
- gem 'rails-controller-testing'
15
- end
16
-
17
- appraise 'spree-4-0' do
18
- gem 'spree', github: 'spree/spree', tag: 'v4.0.0.beta'
1
+ appraise 'spree-4-1' do
19
2
  gem 'rails-controller-testing'
3
+ gem 'spree', github: 'spree/spree', branch: 'master'
20
4
  end
21
5
 
22
6
  appraise 'spree-master' do
23
- gem 'spree', github: 'spree/spree', branch: 'master'
24
7
  gem 'rails-controller-testing'
8
+ gem 'spree', github: 'spree/spree', branch: 'master'
25
9
  end
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem "rails-controller-testing"
4
- gem 'spree', github: 'spree/spree', branch: 'master'
3
+ gem 'rails-controller-testing'
4
+ gem 'spree', '~> 4.1.0'
5
5
 
6
6
  gemspec
data/README.md CHANGED
@@ -10,20 +10,11 @@ Provides authentication services for [Spree](https://spreecommerce.org), using t
10
10
 
11
11
  1. Add this extension to your Gemfile with this line:
12
12
 
13
- #### Spree >= 3.1
14
-
15
- ```ruby
16
- gem 'spree_auth_devise', '~> 3.3'
17
- ```
18
-
19
- #### Spree 3.0 and Spree 2.x
20
-
21
13
  ```ruby
22
- gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: 'X-X-stable'
14
+ gem 'spree_auth_devise'
23
15
  ```
24
-
25
- The `branch` option is important: it must match the version of Spree you're using.
26
- For example, use `3-0-stable` if you're using Spree `3-0-stable` or any `3.0.x` version.
16
+
17
+ if you run into any version-mismatch problems please run `bundle update`
27
18
 
28
19
  2. Install the gem using Bundler:
29
20
  ```ruby
@@ -6,6 +6,30 @@ class Spree::UserConfirmationsController < Devise::ConfirmationsController
6
6
  include Spree::Core::ControllerHelpers::Order
7
7
  include Spree::Core::ControllerHelpers::Store
8
8
 
9
+ before_action :set_current_order
10
+
11
+ # GET /resource/confirmation?confirmation_token=abcdef
12
+ def show
13
+ self.resource = resource_class.confirm_by_token(params[:confirmation_token])
14
+ yield resource if block_given?
15
+
16
+ if resource.errors.empty?
17
+ set_flash_message!(:notice, :confirmed)
18
+ respond_with_navigational(resource) do
19
+ redirect_to after_confirmation_path_for(resource_name, resource)
20
+ end
21
+ elsif resource.confirmed?
22
+ set_flash_message(:error, :already_confirmed)
23
+ respond_with_navigational(resource) do
24
+ redirect_to after_confirmation_path_for(resource_name, resource)
25
+ end
26
+ else
27
+ respond_with_navigational(resource.errors, status: :unprocessable_entity) do
28
+ render :new
29
+ end
30
+ end
31
+ end
32
+
9
33
  protected
10
34
 
11
35
  def after_confirmation_path_for(resource_name, resource)
@@ -10,6 +10,8 @@ class Spree::UserPasswordsController < Devise::PasswordsController
10
10
  include SpreeI18n::ControllerLocaleHelper
11
11
  end
12
12
 
13
+ before_action :set_current_order
14
+
13
15
  # Overridden due to bug in Devise.
14
16
  # respond_with resource, :location => new_session_path(resource_name)
15
17
  # is generating bad url /session/new.user
@@ -11,6 +11,7 @@ class Spree::UserRegistrationsController < Devise::RegistrationsController
11
11
  end
12
12
 
13
13
  before_action :check_permissions, only: [:edit, :update]
14
+ before_action :set_current_order
14
15
  skip_before_action :require_no_authentication
15
16
 
16
17
  # GET /resource/sign_up
@@ -29,7 +30,7 @@ class Spree::UserRegistrationsController < Devise::RegistrationsController
29
30
  set_flash_message :notice, :signed_up
30
31
  sign_up(resource_name, resource)
31
32
  session[:spree_user_signup] = true
32
- respond_with resource, location: after_sign_up_path_for(resource)
33
+ redirect_to_checkout_or_account_path(resource)
33
34
  else
34
35
  set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}"
35
36
  expire_data_after_sign_in!
@@ -75,9 +76,34 @@ class Spree::UserRegistrationsController < Devise::RegistrationsController
75
76
  'devise.user_registrations'
76
77
  end
77
78
 
79
+ def after_sign_up_path_for(resource)
80
+ after_sign_in_redirect(resource) if is_navigational_format?
81
+ end
82
+
83
+ def after_inactive_sign_up_path_for(resource)
84
+ scope = Devise::Mapping.find_scope!(resource)
85
+ router_name = Devise.mappings[scope].router_name
86
+ context = router_name ? send(router_name) : self
87
+ context.respond_to?(:login_path) ? context.login_path : "/login"
88
+ end
89
+
78
90
  private
79
91
 
80
92
  def spree_user_params
81
93
  params.require(:spree_user).permit(Spree::PermittedAttributes.user_attributes)
82
94
  end
95
+
96
+ def after_sign_in_redirect(resource_or_scope)
97
+ stored_location_for(resource_or_scope) || account_path
98
+ end
99
+
100
+ def redirect_to_checkout_or_account_path(resource)
101
+ resource_path = after_sign_up_path_for(resource)
102
+
103
+ if resource_path == spree.checkout_state_path(:address)
104
+ respond_with resource, location: spree.checkout_state_path(:address)
105
+ else
106
+ respond_with resource, location: spree.account_path
107
+ end
108
+ end
83
109
  end
@@ -10,6 +10,8 @@ class Spree::UserSessionsController < Devise::SessionsController
10
10
  include SpreeI18n::ControllerLocaleHelper
11
11
  end
12
12
 
13
+ before_action :set_current_order
14
+
13
15
  def create
14
16
  authenticate_spree_user!
15
17
 
@@ -17,7 +19,7 @@ class Spree::UserSessionsController < Devise::SessionsController
17
19
  respond_to do |format|
18
20
  format.html {
19
21
  flash[:success] = Spree.t(:logged_in_succesfully)
20
- redirect_back_or_default(after_sign_in_path_for(spree_current_user))
22
+ redirect_back_or_default(after_sign_in_redirect(spree_current_user))
21
23
  }
22
24
  format.js {
23
25
  render json: { user: spree_current_user,
@@ -54,4 +56,24 @@ class Spree::UserSessionsController < Devise::SessionsController
54
56
  redirect_to(session["spree_user_return_to"] || default)
55
57
  session["spree_user_return_to"] = nil
56
58
  end
59
+
60
+ def after_sign_in_redirect(resource_or_scope)
61
+ stored_location_for(resource_or_scope) || account_path
62
+ end
63
+
64
+ def respond_to_on_destroy
65
+ # We actually need to hardcode this as Rails default responder doesn't
66
+ # support returning empty response on GET request
67
+ respond_to do |format|
68
+ format.all { head :no_content }
69
+ format.any(*navigational_formats) { redirect_to after_sign_out_redirect(resource_name) }
70
+ end
71
+ end
72
+
73
+ def after_sign_out_redirect(resource_or_scope)
74
+ scope = Devise::Mapping.find_scope!(resource_or_scope)
75
+ router_name = Devise.mappings[scope].router_name
76
+ context = router_name ? send(router_name) : self
77
+ context.respond_to?(:login_path) ? context.login_path : "/"
78
+ end
57
79
  end
@@ -1,22 +1,25 @@
1
1
  <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @spree_user } %>
2
- <div class="col-lg-6 offset-lg-3">
3
- <div class="card mb-3">
4
- <div class="card-header">
5
- <h3 class="card-title mb-0 h6"><%= Spree.t(:change_your_password) %></h3>
6
- </div>
7
- <div class="card-body">
8
- <%= form_for @spree_user, :as => :spree_user, :url => spree.update_password_path, :method => :put do |f| %>
9
- <div class="form-group">
10
- <%= f.label :password, Spree.t(:password) %>
11
- <%= f.password_field :password, :class => "form-control" %>
12
- </div>
13
- <div class="form-group">
14
- <%= f.label :password_confirmation, Spree.t(:confirm_password) %>
15
- <%= f.password_field :password_confirmation, :class => "form-control" %>
2
+
3
+ <div class="container user-passwords">
4
+ <div class="row">
5
+ <div class="col-lg-6 offset-lg-3">
6
+ <div class="card mb-3 user-passwords-no-border">
7
+ <h3 class="spree-mb-large spree-mt-large spree-header"><%= Spree.t(:change_your_password) %></h3>
8
+ <div class="card-body">
9
+ <%= form_for @spree_user, as: :spree_user, url: spree.update_password_path, method: :put do |f| %>
10
+ <div class="form-group">
11
+ <%= f.label :password, Spree.t(:password), class: 'spree-flat-label' %>
12
+ <%= f.password_field :password, class: "spree-flat-input" %>
13
+ </div>
14
+ <div class="form-group">
15
+ <%= f.label :password_confirmation, Spree.t(:confirm_password), class: 'spree-flat-label' %>
16
+ <%= f.password_field :password_confirmation, class: "spree-flat-input" %>
17
+ </div>
18
+ <%= f.hidden_field :reset_password_token %>
19
+ <%= f.submit Spree.t(:update), class: 'btn btn-primary btn-block spree-btn mt-2' %>
20
+ <% end %>
16
21
  </div>
17
- <%= f.hidden_field :reset_password_token %>
18
- <%= f.submit Spree.t(:update), :class => 'btn btn-lg btn-success btn-block' %>
19
- <% end %>
22
+ </div>
20
23
  </div>
21
24
  </div>
22
25
  </div>
@@ -1,21 +1,23 @@
1
1
  <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @spree_user } %>
2
- <div class="col-lg-6 offset-lg-3" id="forgot-password">
3
- <div class="card mb-3">
4
- <div class="card-header">
5
- <h3 class="card-title mb-0 h6"><%= Spree.t(:forgot_password) %></h3>
6
- </div>
7
- <div class="card-body">
8
- <p><%= Spree.t(:instructions_to_reset_password) %></p>
9
2
 
10
- <%= form_for Spree::User.new, :as => :spree_user, :url => spree.reset_password_path do |f| %>
11
- <div class="form-group">
12
- <%= f.label :email, Spree.t(:email) %>
13
- <%= f.email_field :email, :class => "form-control" %>
14
- </div>
15
- <div>
16
- <%= f.submit Spree.t(:reset_password), :class => 'btn btn-lg btn-success btn-block' %>
3
+ <div class="container user-passwords">
4
+ <div class="row">
5
+ <div class="col-lg-6 offset-lg-3" id="forgot-password">
6
+ <div class="card mb-3 user-passwords-no-border">
7
+ <h3 class="spree-mb-large spree-mt-large spree-header"><%= Spree.t(:forgot_password) %></h3>
8
+ <div class="card-body">
9
+ <p><%= Spree.t(:instructions_to_reset_password) %></p>
10
+
11
+ <%= form_for Spree.user_class.new, as: :spree_user, url: spree.reset_password_path do |f| %>
12
+ <div class="form-group">
13
+ <%= f.email_field :email, class: "spree-flat-input", placeholder: Spree.t(:email) %>
14
+ </div>
15
+ <div>
16
+ <%= f.submit Spree.t(:reset_password), class: 'btn btn-primary btn-block spree-btn mt-2' %>
17
+ </div>
18
+ <% end %>
17
19
  </div>
18
- <% end %>
20
+ </div>
19
21
  </div>
20
22
  </div>
21
23
  </div>
@@ -1,22 +1,17 @@
1
1
  <% @body_id = 'signup' %>
2
- <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %>
2
+ <%= render partial: 'spree/shared/error_messages', locals: { target: @user } %>
3
3
  <div class="col-lg-6 offset-lg-3">
4
- <div class="card mb-3">
5
- <div class="card-header">
6
- <h3 class="card-title mb-0 h6"><%= Spree.t(:new_customer) %></h3>
7
- </div>
8
- <div id="new-customer" class="card-body" data-hook="login">
9
- <%= form_for resource, :as => :spree_user, :url => spree.registration_path do |f| %>
10
- <div data-hook="signup_inside_form">
11
- <%= render :partial => 'spree/shared/user_form', :locals => { :f => f } %>
12
- <div><%= f.submit Spree.t(:create), :class => 'btn btn-lg btn-success btn-block' %></div>
13
- </div>
14
- <% end %>
15
- <div class="text-center">
16
- <%= Spree.t(:or) %>
17
- <%= link_to Spree.t(:login_as_existing), spree.login_path %>
18
- </div>
19
- <div data-hook="login_extras"></div>
4
+ <h3 class="spree-header spree-mb-large spree-mt-large"><%= Spree.t(:new_customer) %></h3>
5
+ <div id="new-customer" data-hook="login">
6
+ <%= form_for resource, as: :spree_user, url: spree.registration_path do |f| %>
7
+ <div data-hook="signup_inside_form">
8
+ <%= render partial: 'spree/shared/user_form', locals: { f: f, remember_me_field: true } %>
9
+ <div><%= f.submit Spree.t(:sign_up), class: 'btn btn-primary btn-block spree-btn mb-5' %></div>
20
10
  </div>
11
+ <% end %>
12
+
13
+ <h3 class="spree-header header-sm spree-mt-medium mb-3 mb-sm-4 mb-xl-4"><%= Spree.t('already_have_account') %></h3>
14
+ <%= link_to Spree.t(:log_in), spree.login_path, class: 'btn btn-block btn-outline-primary spree-btn spree-mb-large' %>
15
+ <div data-hook="login_extras"></div>
21
16
  </div>
22
17
  </div>
@@ -1,17 +1,16 @@
1
1
  <% @body_id = 'login' %>
2
- <div class="col-lg-6 <%= request.path == spree.login_path ? "offset-lg-3" : "" %>">
3
- <div class="card mb-3">
4
- <div class="card-header">
5
- <h3 class="card-title mb-0 h6"><%= Spree.t(:login_as_existing) %></h3>
6
- </div>
7
- <div id="existing-customer" class="card-body" data-hook="login">
8
- <%= render :partial => 'spree/shared/login' %>
9
- <div class="text-center">
10
- <%= Spree.t(:or) %>
11
- <%= link_to Spree.t(:create_a_new_account), spree.signup_path %> |
12
- <%= link_to Spree.t(:forgot_password), spree.recover_password_path %>
13
- </div>
2
+ <div class="container user-sessions user-sessions-new">
3
+ <div class="row">
4
+ <div class="col-lg-6 offset-lg-3">
5
+ <div class="mb-3">
6
+ <div id="existing-customer" data-hook="login">
7
+ <%= render partial: 'spree/shared/login' %>
14
8
  <div data-hook="login_extras"></div>
9
+ </div>
10
+ <div class="col-lg-11 mx-auto" data-hook="registration">
11
+ <%= render partial: 'spree/shared/registration', locals: { registration_button: 'registration-button' } %>
12
+ </div>
15
13
  </div>
14
+ </div>
16
15
  </div>
17
16
  </div>
@@ -9,6 +9,8 @@ en:
9
9
  confirmations:
10
10
  confirmed: Your account was successfully confirmed. You are now signed in.
11
11
  send_instructions: You will receive an email with instructions about how to confirm your account in a few minutes.
12
+ spree_user:
13
+ already_confirmed: Email was already confirmed, please try signing in.
12
14
  failure:
13
15
  inactive: Your account was not activated yet.
14
16
  invalid: Invalid email or password.
@@ -41,7 +43,7 @@ en:
41
43
  user_registrations:
42
44
  destroyed: Bye! Your account was successfully cancelled. We hope to see you again soon.
43
45
  inactive_signed_up: 'You have signed up successfully. However, we could not sign you in because your account is %{reason}.'
44
- signed_up_but_unconfirmed: You have signed up successfully.
46
+ signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
45
47
  signed_up: Welcome! You have signed up successfully.
46
48
  updated: You updated your account successfully.
47
49
  user_sessions:
data/config/routes.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  Spree::Core::Engine.add_routes do
2
2
  devise_for :spree_user,
3
- class_name: 'Spree::User',
3
+ class_name: Spree.user_class.to_s,
4
4
  controllers: { sessions: 'spree/user_sessions',
5
5
  registrations: 'spree/user_registrations',
6
6
  passwords: 'spree/user_passwords',
@@ -27,12 +27,11 @@ Spree::Core::Engine.add_routes do
27
27
  get '/checkout/registration' => 'checkout#registration', :as => :checkout_registration
28
28
  put '/checkout/registration' => 'checkout#update_registration', :as => :update_checkout_registration
29
29
 
30
- get '/account_link' => 'store#account_link'
31
30
  resource :account, controller: 'users'
32
31
 
33
32
  namespace :admin, path: Spree.admin_path do
34
33
  devise_for :spree_user,
35
- class_name: 'Spree::User',
34
+ class_name: Spree.user_class.to_s,
36
35
  controllers: { sessions: 'spree/admin/user_sessions',
37
36
  passwords: 'spree/admin/user_passwords' },
38
37
  skip: [:unlocks, :omniauth_callbacks, :registrations],
@@ -1,7 +1,7 @@
1
1
  class AddResetPasswordSentAtToSpreeUsers < SpreeExtension::Migration[4.2]
2
2
  def change
3
- Spree::User.reset_column_information
4
- unless Spree::User.column_names.include?("reset_password_sent_at")
3
+ Spree.user_class.reset_column_information
4
+ unless Spree.user_class.column_names.include?("reset_password_sent_at")
5
5
  add_column :spree_users, :reset_password_sent_at, :datetime
6
6
  end
7
7
  end
@@ -3,6 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails-controller-testing"
6
- gem "spree", "~> 3.5.0"
6
+ gem "spree", github: "spree/spree", branch: "master"
7
7
 
8
8
  gemspec path: "../"
@@ -6,7 +6,7 @@ module Spree::CheckoutControllerDecorator
6
6
  end
7
7
 
8
8
  def registration
9
- @user = Spree::User.new
9
+ @user = Spree.user_class.new
10
10
  end
11
11
 
12
12
  def update_registration
@@ -14,7 +14,7 @@ module Spree::CheckoutControllerDecorator
14
14
  redirect_to spree.checkout_state_path(:address)
15
15
  else
16
16
  flash[:error] = t(:email_is_invalid, scope: [:errors, :messages])
17
- @user = Spree::User.new
17
+ @user = Spree.user_class.new
18
18
  render 'registration'
19
19
  end
20
20
  end
@@ -1,16 +1,20 @@
1
1
  class Spree::UsersController < Spree::StoreController
2
- skip_before_action :set_current_order, only: :show
3
- prepend_before_action :load_object, only: [:show, :edit, :update]
2
+ before_action :set_current_order, except: :show
4
3
  prepend_before_action :authorize_actions, only: :new
5
4
 
6
5
  include Spree::Core::ControllerHelpers
7
6
 
8
7
  def show
8
+ load_object
9
9
  @orders = @user.orders.complete.order('completed_at desc')
10
10
  end
11
11
 
12
+ def edit
13
+ load_object
14
+ end
15
+
12
16
  def create
13
- @user = Spree::User.new(user_params)
17
+ @user = Spree.user_class.new(user_params)
14
18
  if @user.save
15
19
 
16
20
  if current_order
@@ -24,10 +28,11 @@ class Spree::UsersController < Spree::StoreController
24
28
  end
25
29
 
26
30
  def update
27
- if @user.update_attributes(user_params)
31
+ load_object
32
+ if @user.update(user_params)
28
33
  if params[:user][:password].present?
29
34
  # this logic needed b/c devise wants to log us out after password changes
30
- Spree::User.reset_password_by_token(params[:user])
35
+ Spree.user_class.reset_password_by_token(params[:user])
31
36
  if Spree::Auth::Config[:signout_after_password_change]
32
37
  sign_in(@user, event: :authentication)
33
38
  else
@@ -52,7 +57,7 @@ class Spree::UsersController < Spree::StoreController
52
57
  end
53
58
 
54
59
  def authorize_actions
55
- authorize! params[:action].to_sym, Spree::User.new
60
+ authorize! params[:action].to_sym, Spree.user_class.new
56
61
  end
57
62
 
58
63
  def accurate_title
@@ -10,10 +10,6 @@ module Spree
10
10
  paths.flatten
11
11
  end
12
12
 
13
- def add_javascripts
14
- append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/spree_auth\n"
15
- end
16
-
17
13
  def generate_devise_key
18
14
  return if ENV['CI']
19
15
  template 'config/initializers/devise.rb', 'config/initializers/devise.rb'
@@ -0,0 +1,36 @@
1
+ module Spree
2
+ module TestingSupport
3
+ module AuthHelpers
4
+ def log_in(email:, password:, remember_me: true)
5
+ visit spree.login_path
6
+
7
+ fill_in 'Email', with: email
8
+ fill_in 'Password', with: password
9
+
10
+ # Regression test for #1257
11
+ first('label', text: 'Remember me').click if remember_me
12
+ click_button 'Log in'
13
+
14
+ expect(page).to have_content 'Logged in successfully'
15
+ end
16
+
17
+ def log_out
18
+ show_user_menu
19
+ click_link 'LOG OUT'
20
+
21
+ expect(page).to have_content 'Signed out successfully'
22
+ end
23
+
24
+ def show_user_menu
25
+ find("button[aria-label='Show user menu']").click
26
+ end
27
+
28
+ def show_user_account
29
+ within '#nav-bar' do
30
+ show_user_menu
31
+ click_link 'MY ACCOUNT'
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,24 @@
1
+ module Spree
2
+ module TestingSupport
3
+ module CheckoutHelpers
4
+ def fill_in_address
5
+ address = 'order_bill_address_attributes'
6
+ fill_in "#{address}_firstname", with: 'Ryan'
7
+ fill_in "#{address}_lastname", with: 'Bigg'
8
+ fill_in "#{address}_address1", with: '143 Swan Street'
9
+ fill_in "#{address}_city", with: 'Richmond'
10
+ select country.name, from: "#{address}_country_id"
11
+ select state.name, from: "#{address}_state_id"
12
+ fill_in "#{address}_zipcode", with: '12345'
13
+ fill_in "#{address}_phone", with: '(555) 555-5555'
14
+ end
15
+
16
+ def fill_in_credit_card_info(invalid: false)
17
+ fill_in 'name_on_card', with: 'Spree Commerce'
18
+ fill_in 'card_number', with: invalid ? '123' : '4111 1111 1111 1111'
19
+ fill_in 'card_expiry', with: '12 / 24'
20
+ fill_in 'card_code', with: '123'
21
+ end
22
+ end
23
+ end
24
+ end