spree_auth_devise 1.3.1 → 3.0.5

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 (144) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +11 -0
  5. data/Gemfile +5 -0
  6. data/{LICENSE → LICENSE.md} +1 -1
  7. data/README.md +86 -10
  8. data/Rakefile +15 -0
  9. data/Versionfile +5 -0
  10. data/app/controllers/metal_decorator.rb +6 -0
  11. data/app/mailers/spree/user_mailer.rb +12 -5
  12. data/app/models/spree/auth_configuration.rb +1 -0
  13. data/app/models/spree/user.rb +17 -50
  14. data/app/overrides/spree/admin/shared/_header/auth_admin_login_navigation_bar.html.erb.deface +4 -0
  15. data/bin/rails +7 -0
  16. data/circle.yml +11 -0
  17. data/config.ru +4 -0
  18. data/config/initializers/devise.rb +3 -8
  19. data/config/initializers/warden.rb +14 -0
  20. data/config/locales/de.yml +40 -37
  21. data/config/locales/en.yml +48 -39
  22. data/config/locales/es.yml +49 -0
  23. data/config/locales/fr.yml +49 -0
  24. data/config/locales/it.yml +76 -0
  25. data/config/locales/nl.yml +41 -46
  26. data/config/locales/pt-BR.yml +51 -0
  27. data/config/locales/tr.yml +49 -0
  28. data/config/routes.rb +32 -15
  29. data/db/default/users.rb +13 -6
  30. data/db/migrate/20140904000425_add_deleted_at_to_users.rb +6 -0
  31. data/db/migrate/20141002154641_add_confirmable_to_users.rb +7 -0
  32. data/lib/assets/javascripts/spree/backend/spree_auth.js.erb +1 -0
  33. data/lib/assets/javascripts/spree/frontend/spree_auth.js.erb +1 -0
  34. data/lib/assets/stylesheets/spree/backend/spree_auth.css.erb +3 -0
  35. data/lib/assets/stylesheets/spree/frontend/spree_auth.css.erb +3 -0
  36. data/lib/controllers/backend/spree/admin/admin_controller_decorator.rb +26 -0
  37. data/lib/controllers/backend/spree/admin/admin_orders_controller_decorator.rb +20 -0
  38. data/{app/controllers → lib/controllers/backend}/spree/admin/admin_resource_controller_decorator.rb +0 -0
  39. data/{app/controllers/spree/admin/admin_orders_controller_decorator.rb → lib/controllers/backend/spree/admin/orders/customer_details_controller_decorator.rb} +3 -2
  40. data/lib/controllers/backend/spree/admin/user_passwords_controller.rb +42 -0
  41. data/lib/controllers/backend/spree/admin/user_sessions_controller.rb +53 -0
  42. data/{app/controllers → lib/controllers/frontend}/spree/checkout_controller_decorator.rb +8 -15
  43. data/lib/controllers/frontend/spree/user_confirmations_controller.rb +14 -0
  44. data/{app/controllers → lib/controllers/frontend}/spree/user_passwords_controller.rb +10 -9
  45. data/{app/controllers → lib/controllers/frontend}/spree/user_registrations_controller.rb +18 -15
  46. data/lib/controllers/frontend/spree/user_sessions_controller.rb +46 -0
  47. data/{app/controllers → lib/controllers/frontend}/spree/users_controller.rb +13 -9
  48. data/lib/generators/spree/auth/install/install_generator.rb +26 -0
  49. data/lib/generators/spree/auth/install/templates/config/initializers/devise.rb +1 -0
  50. data/lib/spree/auth.rb +2 -1
  51. data/lib/spree/auth/devise.rb +7 -0
  52. data/lib/spree/auth/engine.rb +57 -2
  53. data/lib/spree/authentication_helpers.rb +1 -1
  54. data/lib/spree_auth_devise.rb +3 -0
  55. data/lib/views/backend/spree/admin/user_passwords/edit.html.erb +15 -0
  56. data/lib/views/backend/spree/admin/user_passwords/new.html.erb +17 -0
  57. data/lib/views/backend/spree/admin/user_sessions/authorization_failure.html.erb +4 -0
  58. data/lib/views/backend/spree/admin/user_sessions/new.html.erb +38 -0
  59. data/lib/views/backend/spree/layouts/admin/_login_nav.html.erb +33 -0
  60. data/lib/views/backend/spree/layouts/login.html.erb +25 -0
  61. data/lib/views/frontend/spree/checkout/_new_user.html.erb +20 -0
  62. data/lib/views/frontend/spree/checkout/registration.html.erb +27 -0
  63. data/{app/views → lib/views/frontend}/spree/shared/_flashes.html.erb +0 -0
  64. data/lib/views/frontend/spree/shared/_login.html.erb +18 -0
  65. data/lib/views/frontend/spree/shared/_login_bar.html.erb +6 -0
  66. data/lib/views/frontend/spree/shared/_user_form.html.erb +13 -0
  67. data/lib/views/frontend/spree/user_mailer/confirmation_instructions.text.erb +5 -0
  68. data/lib/views/frontend/spree/user_mailer/reset_password_instructions.text.erb +10 -0
  69. data/lib/views/frontend/spree/user_passwords/edit.html.erb +22 -0
  70. data/lib/views/frontend/spree/user_passwords/new.html.erb +21 -0
  71. data/lib/views/frontend/spree/user_registrations/new.html.erb +22 -0
  72. data/lib/views/frontend/spree/user_sessions/new.html.erb +20 -0
  73. data/lib/views/frontend/spree/users/edit.html.erb +17 -0
  74. data/lib/views/frontend/spree/users/show.html.erb +43 -0
  75. data/spec/controllers/spree/admin/orders_controller_spec.rb +14 -0
  76. data/spec/controllers/spree/checkout_controller_spec.rb +141 -0
  77. data/spec/controllers/spree/products_controller_spec.rb +21 -0
  78. data/spec/controllers/spree/user_passwords_controller_spec.rb +44 -0
  79. data/spec/controllers/spree/user_registrations_controller_spec.rb +13 -0
  80. data/spec/controllers/spree/user_sessions_controller_spec.rb +56 -0
  81. data/spec/controllers/spree/users_controller_spec.rb +38 -0
  82. data/spec/factories/confirmed_user.rb +7 -0
  83. data/spec/features/account_spec.rb +58 -0
  84. data/spec/features/admin/orders_spec.rb +28 -0
  85. data/spec/features/admin/password_reset_spec.rb +24 -0
  86. data/spec/features/admin/products_spec.rb +9 -0
  87. data/spec/features/admin/sign_in_spec.rb +45 -0
  88. data/spec/features/admin/sign_out_spec.rb +22 -0
  89. data/spec/features/admin_permissions_spec.rb +46 -0
  90. data/spec/features/change_email_spec.rb +24 -0
  91. data/spec/features/checkout_spec.rb +160 -0
  92. data/spec/features/confirmation_spec.rb +28 -0
  93. data/spec/features/order_spec.rb +62 -0
  94. data/spec/features/password_reset_spec.rb +24 -0
  95. data/spec/features/sign_in_spec.rb +54 -0
  96. data/spec/features/sign_out_spec.rb +25 -0
  97. data/spec/features/sign_up_spec.rb +30 -0
  98. data/spec/mailers/user_mailer_spec.rb +46 -0
  99. data/spec/models/order_spec.rb +26 -0
  100. data/spec/models/user_spec.rb +58 -0
  101. data/spec/spec_helper.rb +24 -0
  102. data/spec/support/ability.rb +15 -0
  103. data/spec/support/authentication_helpers.rb +14 -0
  104. data/spec/support/capybara.rb +7 -0
  105. data/spec/support/confirm_helpers.rb +11 -0
  106. data/spec/support/database_cleaner.rb +18 -0
  107. data/spec/support/email.rb +5 -0
  108. data/spec/support/factory_girl.rb +5 -0
  109. data/spec/support/spree.rb +26 -0
  110. data/spree_auth_devise.gemspec +48 -0
  111. metadata +441 -79
  112. data/app/assets/javascripts/admin/spree_auth.js +0 -1
  113. data/app/assets/javascripts/store/spree_auth.js +0 -1
  114. data/app/assets/stylesheets/admin/spree_auth.css +0 -3
  115. data/app/assets/stylesheets/store/spree_auth.css +0 -3
  116. data/app/controllers/spree/admin/admin_controller_decorator.rb +0 -7
  117. data/app/controllers/spree/admin/admin_users_controller_decorator.rb +0 -21
  118. data/app/controllers/spree/admin/users_controller.rb +0 -77
  119. data/app/controllers/spree/base_controller_decorator.rb +0 -18
  120. data/app/controllers/spree/orders_controller_decorator.rb +0 -15
  121. data/app/controllers/spree/user_sessions_controller.rb +0 -54
  122. data/app/helpers/spree/users_helper.rb +0 -15
  123. data/app/models/spree/current_order_decorator.rb +0 -12
  124. data/app/overrides/admin_tab.rb +0 -6
  125. data/app/overrides/auth_admin_login_navigation_bar.rb +0 -5
  126. data/app/overrides/auth_user_login_form.rb +0 -6
  127. data/app/views/spree/admin/users/_form.html.erb +0 -37
  128. data/app/views/spree/admin/users/edit.html.erb +0 -28
  129. data/app/views/spree/admin/users/index.html.erb +0 -53
  130. data/app/views/spree/admin/users/new.html.erb +0 -23
  131. data/app/views/spree/admin/users/show.html.erb +0 -21
  132. data/app/views/spree/layouts/admin/_login_nav.html.erb +0 -8
  133. data/app/views/spree/shared/_login.html.erb +0 -20
  134. data/app/views/spree/shared/_login_bar.html.erb +0 -6
  135. data/app/views/spree/shared/_user_form.html.erb +0 -17
  136. data/app/views/spree/user_mailer/reset_password_instructions.text.erb +0 -10
  137. data/app/views/spree/user_passwords/edit.html.erb +0 -15
  138. data/app/views/spree/user_passwords/new.html.erb +0 -15
  139. data/app/views/spree/user_registrations/new.html.erb +0 -22
  140. data/app/views/spree/user_sessions/authorization_failure.html.erb +0 -4
  141. data/app/views/spree/user_sessions/new.html.erb +0 -13
  142. data/app/views/spree/users/edit.html.erb +0 -11
  143. data/app/views/spree/users/show.html.erb +0 -43
  144. data/config/initializers/spree.rb +0 -1
data/config/routes.rb CHANGED
@@ -1,31 +1,48 @@
1
- Spree::Core::Engine.routes.draw do
2
- devise_for :user,
1
+ Spree::Core::Engine.add_routes do
2
+ devise_for :spree_user,
3
3
  :class_name => 'Spree::User',
4
4
  :controllers => { :sessions => 'spree/user_sessions',
5
5
  :registrations => 'spree/user_registrations',
6
- :passwords => 'spree/user_passwords' },
6
+ :passwords => 'spree/user_passwords',
7
+ :confirmations => 'spree/user_confirmations' },
7
8
  :skip => [:unlocks, :omniauth_callbacks],
8
- :path_names => { :sign_out => 'logout' }
9
- end
9
+ :path_names => { :sign_out => 'logout' },
10
+ :path_prefix => :user
10
11
 
11
- Spree::Core::Engine.routes.prepend do
12
12
  resources :users, :only => [:edit, :update]
13
13
 
14
- devise_scope :user do
14
+ devise_scope :spree_user do
15
15
  get '/login' => 'user_sessions#new', :as => :login
16
+ post '/login' => 'user_sessions#create', :as => :create_new_session
17
+ get '/logout' => 'user_sessions#destroy', :as => :logout
16
18
  get '/signup' => 'user_registrations#new', :as => :signup
19
+ post '/signup' => 'user_registrations#create', :as => :registration
20
+ get '/password/recover' => 'user_passwords#new', :as => :recover_password
21
+ post '/password/recover' => 'user_passwords#create', :as => :reset_password
22
+ get '/password/change' => 'user_passwords#edit', :as => :edit_password
23
+ put '/password/change' => 'user_passwords#update', :as => :update_password
24
+ get '/confirm' => 'user_confirmations#show', :as => :confirmation if Spree::Auth::Config[:confirmable]
17
25
  end
18
26
 
19
- match '/checkout/registration' => 'checkout#registration', :via => :get, :as => :checkout_registration
20
- match '/checkout/registration' => 'checkout#update_registration', :via => :put, :as => :update_checkout_registration
27
+ get '/checkout/registration' => 'checkout#registration', :as => :checkout_registration
28
+ put '/checkout/registration' => 'checkout#update_registration', :as => :update_checkout_registration
21
29
 
22
- match '/orders/:id/token/:token' => 'orders#show', :via => :get, :as => :token_order
30
+ resource :account, :controller => 'users'
23
31
 
24
- resource :session do
25
- member do
26
- get :nav_bar
32
+ namespace :admin do
33
+ devise_for :spree_user,
34
+ :class_name => 'Spree::User',
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
27
45
  end
28
- end
29
46
 
30
- resource :account, :controller => 'users'
47
+ end
31
48
  end
data/db/default/users.rb CHANGED
@@ -55,11 +55,19 @@ def create_admin_user
55
55
  if Spree::User.find_by_email(email)
56
56
  say "\nWARNING: There is already a user with the email: #{email}, so no account changes were made. If you wish to create an additional admin user, please run rake spree_auth:admin:create again with a different email.\n\n"
57
57
  else
58
- admin = Spree::User.create(attributes)
59
- # create an admin role and and assign the admin user to that role
60
- role = Spree::Role.find_or_create_by_name 'admin'
61
- admin.spree_roles << role
62
- admin.save
58
+ admin = Spree::User.new(attributes)
59
+ if admin.save
60
+ role = Spree::Role.find_or_create_by(name: 'admin')
61
+ admin.spree_roles << role
62
+ admin.save
63
+ admin.generate_spree_api_key!
64
+ say "Done!"
65
+ else
66
+ say "There was some problems with persisting new admin user:"
67
+ admin.errors.full_messages.each do |error|
68
+ say error
69
+ end
70
+ end
63
71
  end
64
72
  end
65
73
 
@@ -73,4 +81,3 @@ else
73
81
  puts 'No admin user created.'
74
82
  end
75
83
  end
76
-
@@ -0,0 +1,6 @@
1
+ class AddDeletedAtToUsers < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_users, :deleted_at, :datetime
4
+ add_index :spree_users, :deleted_at
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ class AddConfirmableToUsers < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_users, :confirmation_token, :string
4
+ add_column :spree_users, :confirmed_at, :datetime
5
+ add_column :spree_users, :confirmation_sent_at, :datetime
6
+ end
7
+ end
@@ -0,0 +1 @@
1
+ //= require spree/backend
@@ -0,0 +1 @@
1
+ //= require spree/frontend
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require spree/backend
3
+ */
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require spree/frontend
3
+ */
@@ -0,0 +1,26 @@
1
+ Spree::Admin::BaseController.class_eval do
2
+
3
+ # Redirect as appropriate when an access request fails. The default action is to redirect to the login screen.
4
+ # Override this method in your controllers if you want to have special behavior in case the user is not authorized
5
+ # to access the requested action. For example, a popup window might simply close itself.
6
+ def unauthorized
7
+ if try_spree_current_user
8
+ flash[:error] = Spree.t(:authorization_failure)
9
+ redirect_to spree.admin_unauthorized_path
10
+ else
11
+ store_location
12
+ redirect_to spree.admin_login_path
13
+ end
14
+ end
15
+
16
+ protected
17
+
18
+ def model_class
19
+ const_name = controller_name.classify
20
+ if Spree.const_defined?(const_name, false)
21
+ return "Spree::#{const_name}".constantize
22
+ end
23
+ nil
24
+ end
25
+
26
+ end
@@ -0,0 +1,20 @@
1
+ Spree::Admin::OrdersController.class_eval do
2
+ before_filter :check_authorization
3
+
4
+ private
5
+ def load_order_action
6
+ [:edit, :update, :cancel, :resume, :approve, :resend, :open_adjustments, :close_adjustments, :cart]
7
+ end
8
+
9
+ def check_authorization
10
+ action = params[:action].to_sym
11
+ if load_order_action.include?(action)
12
+ load_order
13
+ session[:access_token] ||= params[:token]
14
+ resource = @order || Spree::Order.new
15
+ authorize! action, resource, session[:access_token]
16
+ else
17
+ authorize! :index, Spree::Order
18
+ end
19
+ end
20
+ end
@@ -1,4 +1,4 @@
1
- Spree::Admin::OrdersController.class_eval do
1
+ Spree::Admin::Orders::CustomerDetailsController.class_eval do
2
2
  before_filter :check_authorization
3
3
 
4
4
  private
@@ -6,8 +6,9 @@ Spree::Admin::OrdersController.class_eval do
6
6
  load_order
7
7
  session[:access_token] ||= params[:token]
8
8
 
9
- resource = @order || Spree::Order.new
9
+ resource = @order
10
10
  action = params[:action].to_sym
11
+ action = :edit if action == :show # show route renders :edit for this controller
11
12
 
12
13
  authorize! action, resource, session[:access_token]
13
14
  end
@@ -0,0 +1,42 @@
1
+ class Spree::Admin::UserPasswordsController < Devise::PasswordsController
2
+ helper 'spree/base'
3
+
4
+ include Spree::Core::ControllerHelpers::Auth
5
+ include Spree::Core::ControllerHelpers::Common
6
+ include Spree::Core::ControllerHelpers::Store
7
+
8
+ helper 'spree/admin/navigation'
9
+ helper 'spree/admin/tables'
10
+ layout 'spree/layouts/admin'
11
+
12
+ # Overridden due to bug in Devise.
13
+ # respond_with resource, :location => new_session_path(resource_name)
14
+ # is generating bad url /session/new.user
15
+ #
16
+ # overridden to:
17
+ # respond_with resource, :location => spree.login_path
18
+ #
19
+ def create
20
+ self.resource = resource_class.send_reset_password_instructions(params[resource_name])
21
+
22
+ if resource.errors.empty?
23
+ set_flash_message(:notice, :send_instructions) if is_navigational_format?
24
+ respond_with resource, :location => spree.admin_login_path
25
+ else
26
+ respond_with_navigational(resource) { render :new }
27
+ end
28
+ end
29
+
30
+ # Devise::PasswordsController allows for blank passwords.
31
+ # Silly Devise::PasswordsController!
32
+ # Fixes spree/spree#2190.
33
+ def update
34
+ if params[:spree_user][:password].blank?
35
+ set_flash_message(:error, :cannot_be_blank)
36
+ render :edit
37
+ else
38
+ super
39
+ end
40
+ end
41
+
42
+ end
@@ -0,0 +1,53 @@
1
+ class Spree::Admin::UserSessionsController < Devise::SessionsController
2
+ helper 'spree/base'
3
+
4
+ include Spree::Core::ControllerHelpers::Auth
5
+ include Spree::Core::ControllerHelpers::Common
6
+ include Spree::Core::ControllerHelpers::Store
7
+
8
+ helper 'spree/admin/navigation'
9
+ helper 'spree/admin/tables'
10
+ layout :resolve_layout
11
+
12
+ def create
13
+ authenticate_spree_user!
14
+
15
+ if spree_user_signed_in?
16
+ respond_to do |format|
17
+ format.html {
18
+ flash[:success] = Spree.t(:logged_in_succesfully)
19
+ redirect_back_or_default(after_sign_in_path_for(spree_current_user))
20
+ }
21
+ format.js {
22
+ user = resource.record
23
+ render :json => {:ship_address => user.ship_address, :bill_address => user.bill_address}.to_json
24
+ }
25
+ end
26
+ else
27
+ flash.now[:error] = t('devise.failure.invalid')
28
+ render :new
29
+ end
30
+ end
31
+
32
+ def authorization_failure
33
+ end
34
+
35
+ private
36
+ def accurate_title
37
+ Spree.t(:login)
38
+ end
39
+
40
+ def redirect_back_or_default(default)
41
+ redirect_to(session["spree_user_return_to"] || default)
42
+ session["spree_user_return_to"] = nil
43
+ end
44
+
45
+ def resolve_layout
46
+ case action_name
47
+ when "new", "create"
48
+ "spree/layouts/login"
49
+ else
50
+ "spree/layouts/admin"
51
+ end
52
+ end
53
+ end
@@ -1,33 +1,33 @@
1
+ require 'spree/core/validators/email'
1
2
  Spree::CheckoutController.class_eval do
2
3
  before_filter :check_authorization
3
4
  before_filter :check_registration, :except => [:registration, :update_registration]
4
5
 
5
- helper 'spree/users'
6
-
7
6
  def registration
8
7
  @user = Spree::User.new
9
8
  end
10
9
 
11
10
  def update_registration
12
- fire_event("spree.user.signup", :order => current_order)
13
- # hack - temporarily change the state to something other than cart so we can validate the order email address
14
- current_order.state = 'address'
15
- if current_order.update_attributes(params[:order])
16
- redirect_to checkout_path
11
+ if params[:order][:email] =~ Devise.email_regexp && current_order.update_attribute(:email, params[:order][:email])
12
+ redirect_to spree.checkout_path
17
13
  else
14
+ flash[:registration_error] = t(:email_is_invalid, :scope => [:errors, :messages])
18
15
  @user = Spree::User.new
19
16
  render 'registration'
20
17
  end
21
18
  end
22
19
 
23
20
  private
21
+ def order_params
22
+ params[:order] ? params.require(:order).permit(:email) : {}
23
+ end
24
24
 
25
25
  def skip_state_validation?
26
26
  %w(registration update_registration).include?(params[:action])
27
27
  end
28
28
 
29
29
  def check_authorization
30
- authorize!(:edit, current_order, session[:access_token])
30
+ authorize!(:edit, current_order, cookies.signed[:guest_token])
31
31
  end
32
32
 
33
33
  # Introduces a registration step whenever the +registration_step+ preference is true.
@@ -37,11 +37,4 @@ Spree::CheckoutController.class_eval do
37
37
  store_location
38
38
  redirect_to spree.checkout_registration_path
39
39
  end
40
-
41
- # Overrides the equivalent method defined in Spree::Core. This variation of the method will ensure that users
42
- # are redirected to the tokenized order url unless authenticated as a registered user.
43
- def completion_route
44
- return order_path(@order) if spree_current_user
45
- spree.token_order_path(@order, @order.token)
46
- end
47
40
  end
@@ -0,0 +1,14 @@
1
+ class Spree::UserConfirmationsController < Devise::ConfirmationsController
2
+ helper 'spree/base'
3
+
4
+ include Spree::Core::ControllerHelpers::Auth
5
+ include Spree::Core::ControllerHelpers::Common
6
+ include Spree::Core::ControllerHelpers::Order
7
+ include Spree::Core::ControllerHelpers::Store
8
+
9
+ protected
10
+
11
+ def after_confirmation_path_for(resource_name, resource)
12
+ signed_in?(resource_name) ? signed_in_root_path(resource) : spree.login_path
13
+ end
14
+ end
@@ -1,16 +1,10 @@
1
1
  class Spree::UserPasswordsController < Devise::PasswordsController
2
- include SslRequirement
3
- helper 'spree/users', 'spree/base'
4
-
5
- if defined?(Spree::Dash)
6
- helper 'spree/analytics'
7
- end
2
+ helper 'spree/base'
8
3
 
9
4
  include Spree::Core::ControllerHelpers::Auth
10
5
  include Spree::Core::ControllerHelpers::Common
11
6
  include Spree::Core::ControllerHelpers::Order
12
-
13
- ssl_required
7
+ include Spree::Core::ControllerHelpers::Store
14
8
 
15
9
  # Overridden due to bug in Devise.
16
10
  # respond_with resource, :location => new_session_path(resource_name)
@@ -34,7 +28,9 @@ class Spree::UserPasswordsController < Devise::PasswordsController
34
28
  # Silly Devise::PasswordsController!
35
29
  # Fixes spree/spree#2190.
36
30
  def update
37
- if params[:user][:password].blank?
31
+ if params[:spree_user][:password].blank?
32
+ self.resource = resource_class.new
33
+ resource.reset_password_token = params[:spree_user][:reset_password_token]
38
34
  set_flash_message(:error, :cannot_be_blank)
39
35
  render :edit
40
36
  else
@@ -42,4 +38,9 @@ class Spree::UserPasswordsController < Devise::PasswordsController
42
38
  end
43
39
  end
44
40
 
41
+ protected
42
+
43
+ def new_session_path(resource_name)
44
+ spree.send("new_#{resource_name}_session_path")
45
+ end
45
46
  end
@@ -1,34 +1,31 @@
1
1
  class Spree::UserRegistrationsController < Devise::RegistrationsController
2
-
3
- include SslRequirement
4
- helper 'spree/users', 'spree/base'
5
-
6
- if defined?(Spree::Dash)
7
- helper 'spree/analytics'
8
- end
2
+ helper 'spree/base'
9
3
 
10
4
  include Spree::Core::ControllerHelpers::Auth
11
5
  include Spree::Core::ControllerHelpers::Common
12
6
  include Spree::Core::ControllerHelpers::Order
7
+ include Spree::Core::ControllerHelpers::Store
13
8
 
14
- ssl_required
15
9
  before_filter :check_permissions, :only => [:edit, :update]
16
10
  skip_before_filter :require_no_authentication
17
11
 
18
12
  # GET /resource/sign_up
19
13
  def new
20
14
  super
15
+ @user = resource
21
16
  end
22
17
 
23
18
  # POST /resource/sign_up
24
19
  def create
25
- @user = build_resource(params[:user])
20
+ @user = build_resource(spree_user_params)
26
21
  if resource.save
27
22
  set_flash_message(:notice, :signed_up)
28
- sign_in(:user, @user)
23
+ if current_order
24
+ current_order.associate_user! @user
25
+ end
26
+ sign_in(:spree_user, @user)
29
27
  session[:spree_user_signup] = true
30
- associate_user
31
- sign_in_and_redirect(:user, @user)
28
+ respond_with resource, location: after_sign_up_path_for(resource)
32
29
  else
33
30
  clean_up_passwords(resource)
34
31
  render :new
@@ -60,8 +57,14 @@ class Spree::UserRegistrationsController < Devise::RegistrationsController
60
57
  end
61
58
 
62
59
  protected
63
- def check_permissions
64
- authorize!(:create, resource)
65
- end
66
60
 
61
+ def check_permissions
62
+ authorize!(:create, resource)
63
+ end
64
+
65
+ private
66
+
67
+ def spree_user_params
68
+ params.require(:spree_user).permit(Spree::PermittedAttributes.user_attributes)
69
+ end
67
70
  end