solidus_auth_devise 2.0.0 → 2.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 (121) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +35 -0
  3. data/.gem_release.yml +5 -0
  4. data/.github/stale.yml +17 -0
  5. data/.gitignore +12 -8
  6. data/.rubocop.yml +2 -0
  7. data/CHANGELOG.md +284 -145
  8. data/Gemfile +22 -14
  9. data/{LICENSE.md → LICENSE} +2 -2
  10. data/README.md +50 -3
  11. data/Rakefile +2 -0
  12. data/app/mailers/spree/user_mailer.rb +4 -2
  13. data/app/models/spree/auth_configuration.rb +2 -0
  14. data/app/models/spree/user.rb +30 -20
  15. data/app/overrides/spree/admin/users/edit/_add_reset_password_form.html.erb.deface +20 -0
  16. data/bin/console +17 -0
  17. data/bin/rails +12 -4
  18. data/bin/setup +8 -0
  19. data/config/initializers/devise.rb +11 -3
  20. data/config/initializers/warden.rb +4 -2
  21. data/config/locales/en.yml +4 -1
  22. data/config/locales/fr.yml +1 -1
  23. data/config/locales/it.yml +4 -4
  24. data/config/routes.rb +16 -15
  25. data/db/default/users.rb +10 -8
  26. data/db/migrate/20101026184949_create_users.rb +9 -7
  27. data/db/migrate/20101026184950_rename_columns_for_devise.rb +3 -1
  28. data/db/migrate/20101214150824_convert_user_remember_field.rb +2 -0
  29. data/db/migrate/20120203010234_add_reset_password_sent_at_to_spree_users.rb +2 -0
  30. data/db/migrate/20120605211305_make_users_email_index_unique.rb +4 -2
  31. data/db/migrate/20140904000425_add_deleted_at_to_users.rb +2 -0
  32. data/db/migrate/20141002154641_add_confirmable_to_users.rb +2 -0
  33. data/db/migrate/20190125170630_add_reset_password_token_index_to_spree_users.rb +34 -0
  34. data/db/migrate/20200417153503_add_unconfirmed_email_to_spree_users.rb +7 -0
  35. data/db/seeds.rb +2 -0
  36. data/lib/controllers/backend/spree/admin/user_passwords_controller.rb +7 -4
  37. data/lib/controllers/backend/spree/admin/user_sessions_controller.rb +12 -10
  38. data/lib/controllers/frontend/spree/user_confirmations_controller.rb +2 -0
  39. data/lib/controllers/frontend/spree/user_passwords_controller.rb +4 -1
  40. data/lib/controllers/frontend/spree/user_registrations_controller.rb +4 -0
  41. data/lib/controllers/frontend/spree/user_sessions_controller.rb +4 -2
  42. data/lib/controllers/frontend/spree/users_controller.rb +20 -15
  43. data/lib/decorators/backend/controllers/spree/admin/base_controller_decorator.rb +20 -0
  44. data/lib/decorators/backend/controllers/spree/admin/orders/customer_details_controller_decorator.rb +22 -0
  45. data/lib/{controllers/frontend → decorators/frontend/controllers}/spree/checkout_controller_decorator.rb +29 -19
  46. data/lib/generators/solidus/auth/install/install_generator.rb +15 -3
  47. data/lib/generators/solidus/auth/install/templates/config/initializers/devise.rb +3 -1
  48. data/lib/solidus/auth.rb +2 -0
  49. data/lib/solidus_auth_devise.rb +13 -5
  50. data/lib/spree/auth/devise.rb +2 -7
  51. data/lib/spree/auth/engine.rb +51 -38
  52. data/lib/spree/auth/version.rb +7 -0
  53. data/lib/spree/authentication_helpers.rb +5 -11
  54. data/lib/tasks/auth.rake +3 -1
  55. data/lib/views/backend/spree/admin/shared/_navigation_footer.html.erb +13 -6
  56. data/lib/views/backend/spree/admin/user_passwords/edit.html.erb +4 -4
  57. data/lib/views/backend/spree/admin/user_passwords/new.html.erb +6 -8
  58. data/lib/views/backend/spree/admin/user_sessions/authorization_failure.html.erb +1 -1
  59. data/lib/views/backend/spree/admin/user_sessions/new.html.erb +9 -9
  60. data/lib/views/backend/spree/layouts/admin/_login_nav.html.erb +4 -4
  61. data/lib/views/frontend/spree/checkout/registration.html.erb +4 -4
  62. data/lib/views/frontend/spree/shared/_login.html.erb +4 -4
  63. data/lib/views/frontend/spree/shared/_login_bar.html.erb +2 -6
  64. data/lib/views/frontend/spree/shared/_login_bar_items.html.erb +6 -0
  65. data/lib/views/frontend/spree/shared/_user_form.html.erb +3 -3
  66. data/lib/views/frontend/spree/user_passwords/edit.html.erb +4 -4
  67. data/lib/views/frontend/spree/user_passwords/new.html.erb +5 -7
  68. data/lib/views/frontend/spree/user_registrations/new.html.erb +3 -3
  69. data/lib/views/frontend/spree/user_sessions/authorization_failure.html.erb +1 -1
  70. data/lib/views/frontend/spree/user_sessions/new.html.erb +2 -2
  71. data/lib/views/frontend/spree/users/edit.html.erb +2 -2
  72. data/lib/views/frontend/spree/users/show.html.erb +12 -12
  73. data/solidus_auth_devise.gemspec +38 -31
  74. data/spec/controllers/spree/admin/base_controller_spec.rb +53 -0
  75. data/spec/controllers/spree/admin/user_passwords_controller_spec.rb +14 -0
  76. data/spec/controllers/spree/base_controller_spec.rb +53 -0
  77. data/spec/controllers/spree/checkout_controller_spec.rb +6 -10
  78. data/spec/controllers/spree/products_controller_spec.rb +6 -3
  79. data/spec/controllers/spree/user_passwords_controller_spec.rb +4 -3
  80. data/spec/controllers/spree/user_registrations_controller_spec.rb +3 -2
  81. data/spec/controllers/spree/user_sessions_controller_spec.rb +14 -0
  82. data/spec/controllers/spree/users_controller_spec.rb +26 -8
  83. data/spec/factories/confirmed_user.rb +7 -5
  84. data/spec/features/account_spec.rb +4 -3
  85. data/spec/features/admin/password_reset_spec.rb +66 -10
  86. data/spec/features/admin/products_spec.rb +2 -1
  87. data/spec/features/admin/sign_in_spec.rb +2 -1
  88. data/spec/features/admin/sign_out_spec.rb +2 -1
  89. data/spec/features/admin_permissions_spec.rb +2 -1
  90. data/spec/features/change_email_spec.rb +3 -2
  91. data/spec/features/checkout_spec.rb +14 -37
  92. data/spec/features/confirmation_spec.rb +6 -10
  93. data/spec/features/order_spec.rb +2 -1
  94. data/spec/features/password_reset_spec.rb +23 -10
  95. data/spec/features/sign_in_spec.rb +2 -1
  96. data/spec/features/sign_out_spec.rb +4 -3
  97. data/spec/features/sign_up_spec.rb +2 -1
  98. data/spec/mailers/user_mailer_spec.rb +2 -1
  99. data/spec/models/order_spec.rb +2 -1
  100. data/spec/models/user_spec.rb +57 -38
  101. data/spec/spec_helper.rb +13 -9
  102. data/spec/support/ability.rb +3 -1
  103. data/spec/support/authentication_helpers.rb +2 -0
  104. data/spec/support/confirm_helpers.rb +23 -10
  105. data/spec/support/email.rb +2 -0
  106. data/spec/support/features/fill_addresses_fields.rb +29 -0
  107. data/spec/support/preferences.rb +10 -2
  108. data/spec/support/spree.rb +2 -0
  109. metadata +327 -243
  110. data/.travis.yml +0 -22
  111. data/app/overrides/auth_admin_login_navigation_bar.rb +0 -11
  112. data/app/overrides/auth_shared_login_bar.rb +0 -10
  113. data/circle.yml +0 -6
  114. data/lib/assets/javascripts/spree/backend/solidus_auth.js +0 -1
  115. data/lib/assets/javascripts/spree/frontend/solidus_auth.js +0 -1
  116. data/lib/assets/stylesheets/spree/backend/solidus_auth.css +0 -3
  117. data/lib/assets/stylesheets/spree/frontend/solidus_auth.css +0 -3
  118. data/lib/controllers/backend/spree/admin/admin_controller_decorator.rb +0 -11
  119. data/lib/controllers/backend/spree/admin/admin_orders_controller_decorator.rb +0 -20
  120. data/lib/controllers/backend/spree/admin/orders/customer_details_controller_decorator.rb +0 -15
  121. data/spec/features/admin/orders_spec.rb +0 -30
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # see last line where we create an admin if there is none, asking for email and password
2
4
  def prompt_for_admin_password
3
5
  if ENV['ADMIN_PASSWORD']
@@ -31,20 +33,20 @@ def create_admin_user
31
33
  email = 'admin@example.com'
32
34
  else
33
35
  puts 'Create the admin user (press enter for defaults).'
34
- #name = prompt_for_admin_name unless name
36
+ # name = prompt_for_admin_name unless name
35
37
  email = prompt_for_admin_email
36
38
  password = prompt_for_admin_password
37
39
  end
38
40
  attributes = {
39
- :password => password,
40
- :password_confirmation => password,
41
- :email => email,
42
- :login => email
41
+ password: password,
42
+ password_confirmation: password,
43
+ email: email,
44
+ login: email
43
45
  }
44
46
 
45
47
  load 'spree/user.rb'
46
48
 
47
- if Spree::User.find_by_email(email)
49
+ if Spree::User.find_by(email: email)
48
50
  puts "\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"
49
51
  else
50
52
  admin = Spree::User.new(attributes)
@@ -55,7 +57,7 @@ def create_admin_user
55
57
  admin.generate_spree_api_key!
56
58
  puts "Done!"
57
59
  else
58
- puts "There was some problems with persisting new admin user:"
60
+ puts "There were some problems with persisting a new admin user:"
59
61
  admin.errors.full_messages.each do |error|
60
62
  puts error
61
63
  end
@@ -66,7 +68,7 @@ end
66
68
  if Spree::User.admin.empty?
67
69
  create_admin_user
68
70
  else
69
- puts 'Admin user has already been previously created.'
71
+ puts 'Admin user has already been created.'
70
72
  puts 'Would you like to create a new admin user? (yes/no)'
71
73
  if ["yes", "y"].include? STDIN.gets.strip.downcase
72
74
  create_admin_user
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class CreateUsers < SolidusSupport::Migration[4.2]
2
4
  def up
3
5
  unless table_exists?("spree_users")
4
- create_table "spree_users", :force => true do |t|
5
- t.string "crypted_password", :limit => 128
6
- t.string "salt", :limit => 128
6
+ create_table "spree_users", force: true do |t|
7
+ t.string "crypted_password", limit: 128
8
+ t.string "salt", limit: 128
7
9
  t.string "email"
8
10
  t.string "remember_token"
9
11
  t.string "remember_token_expires_at"
10
12
  t.string "persistence_token"
11
13
  t.string "single_access_token"
12
14
  t.string "perishable_token"
13
- t.integer "login_count", :default => 0, :null => false
14
- t.integer "failed_login_count", :default => 0, :null => false
15
+ t.integer "login_count", default: 0, null: false
16
+ t.integer "failed_login_count", default: 0, null: false
15
17
  t.datetime "last_request_at"
16
18
  t.datetime "current_login_at"
17
19
  t.datetime "last_login_at"
@@ -20,8 +22,8 @@ class CreateUsers < SolidusSupport::Migration[4.2]
20
22
  t.string "login"
21
23
  t.integer "ship_address_id"
22
24
  t.integer "bill_address_id"
23
- t.datetime "created_at", :null => false
24
- t.datetime "updated_at", :null => false
25
+ t.datetime "created_at", null: false
26
+ t.datetime "updated_at", null: false
25
27
  t.string "openid_identifier"
26
28
  end
27
29
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RenameColumnsForDevise < SolidusSupport::Migration[4.2]
2
4
  def up
3
5
  return if column_exists?(:spree_users, :password_salt)
6
+
4
7
  rename_column :spree_users, :crypted_password, :encrypted_password
5
8
  rename_column :spree_users, :salt, :password_salt
6
9
  rename_column :spree_users, :remember_token_expires_at, :remember_created_at
@@ -31,7 +34,6 @@ class RenameColumnsForDevise < SolidusSupport::Migration[4.2]
31
34
  rename_column :spree_users, :remember_created_at, :remember_token_expires_at
32
35
  rename_column :spree_users, :password_salt, :salt
33
36
  rename_column :spree_users, :encrypted_password, :crypted_password
34
- add_column :spree_users, :unlock_token, :string
35
37
  add_column :spree_users, :openid_identifier, :string
36
38
  end
37
39
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ConvertUserRememberField < SolidusSupport::Migration[4.2]
2
4
  def up
3
5
  remove_column :spree_users, :remember_created_at
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddResetPasswordSentAtToSpreeUsers < SolidusSupport::Migration[4.2]
2
4
  def change
3
5
  Spree::User.reset_column_information
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class MakeUsersEmailIndexUnique < SolidusSupport::Migration[4.2]
2
4
  def up
3
- add_index "spree_users", ["email"], :name => "email_idx_unique", :unique => true
5
+ add_index "spree_users", ["email"], name: "email_idx_unique", unique: true
4
6
  end
5
7
 
6
8
  def down
7
- remove_index "spree_users", :name => "email_idx_unique"
9
+ remove_index "spree_users", name: "email_idx_unique"
8
10
  end
9
11
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddDeletedAtToUsers < SolidusSupport::Migration[4.2]
2
4
  def change
3
5
  add_column :spree_users, :deleted_at, :datetime
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddConfirmableToUsers < SolidusSupport::Migration[4.2]
2
4
  def change
3
5
  add_column :spree_users, :confirmation_token, :string
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddResetPasswordTokenIndexToSpreeUsers < SolidusSupport::Migration[4.2]
4
+ # We're not using the standard Rails index name because somebody could have
5
+ #  already added that index to the table. By using a custom name we ensure
6
+ # that the index can effectively be added and removed via migrations/rollbacks
7
+ #  without having any impact on such installations. The index name is Rails
8
+ # standard name + "_solidus_auth_devise"; the length is 61 chars which is
9
+ # still OK for Sqlite, mySQL and Postgres.
10
+ def custom_index_name
11
+ 'index_spree_users_on_reset_password_token_solidus_auth_devise'
12
+ end
13
+
14
+ def default_index_exists?
15
+ index_exists?(:spree_users, :reset_password_token)
16
+ end
17
+
18
+ def custom_index_exists?
19
+ index_exists?(:spree_users, :reset_password_token, name: custom_index_name)
20
+ end
21
+
22
+ def up
23
+ Spree::User.reset_column_information
24
+ if Spree::User.column_names.include?('reset_password_token') && !default_index_exists? && !custom_index_exists?
25
+ add_index :spree_users, :reset_password_token, unique: true, name: custom_index_name
26
+ end
27
+ end
28
+
29
+ def down
30
+ if custom_index_exists?
31
+ remove_index :spree_users, name: custom_index_name
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ class AddUnconfirmedEmailToSpreeUsers < ActiveRecord::Migration[5.2]
2
+ def change
3
+ unless column_exists?(:spree_users, :unconfirmed_email)
4
+ add_column :spree_users, :unconfirmed_email, :string
5
+ end
6
+ end
7
+ end
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'default/users.rb'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::Admin::UserPasswordsController < Devise::PasswordsController
2
4
  helper 'spree/base'
3
5
 
@@ -6,9 +8,10 @@ class Spree::Admin::UserPasswordsController < Devise::PasswordsController
6
8
  include Spree::Core::ControllerHelpers::Store
7
9
 
8
10
  helper 'spree/admin/navigation'
9
- helper 'spree/admin/tables'
10
11
  layout 'spree/layouts/admin'
11
12
 
13
+ skip_before_action :require_no_authentication, only: [:create]
14
+
12
15
  # Overridden due to bug in Devise.
13
16
  # respond_with resource, location: new_session_path(resource_name)
14
17
  # is generating bad url /session/new.user
@@ -19,9 +22,10 @@ class Spree::Admin::UserPasswordsController < Devise::PasswordsController
19
22
  def create
20
23
  self.resource = resource_class.send_reset_password_instructions(params[resource_name])
21
24
 
25
+ set_flash_message(:notice, :send_instructions) if is_navigational_format?
26
+
22
27
  if resource.errors.empty?
23
- set_flash_message(:notice, :send_instructions) if is_navigational_format?
24
- respond_with resource, location: spree.admin_login_path
28
+ respond_with resource, location: admin_user_path(resource)
25
29
  else
26
30
  respond_with_navigational(resource) { render :new }
27
31
  end
@@ -38,5 +42,4 @@ class Spree::Admin::UserPasswordsController < Devise::PasswordsController
38
42
  super
39
43
  end
40
44
  end
41
-
42
45
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::Admin::UserSessionsController < Devise::SessionsController
2
4
  helper 'spree/base'
3
5
 
@@ -6,7 +8,6 @@ class Spree::Admin::UserSessionsController < Devise::SessionsController
6
8
  include Spree::Core::ControllerHelpers::Store
7
9
 
8
10
  helper 'spree/admin/navigation'
9
- helper 'spree/admin/tables'
10
11
  layout 'spree/layouts/admin'
11
12
 
12
13
  def create
@@ -15,12 +16,12 @@ class Spree::Admin::UserSessionsController < Devise::SessionsController
15
16
  if spree_user_signed_in?
16
17
  respond_to do |format|
17
18
  format.html {
18
- flash[:success] = Spree.t(:logged_in_succesfully)
19
+ flash[:success] = I18n.t('spree.logged_in_succesfully')
19
20
  redirect_back_or_default(after_sign_in_path_for(spree_current_user))
20
21
  }
21
22
  format.js {
22
23
  user = resource.record
23
- render json: {ship_address: user.ship_address, bill_address: user.bill_address}.to_json
24
+ render json: { ship_address: user.ship_address, bill_address: user.bill_address }.to_json
24
25
  }
25
26
  end
26
27
  else
@@ -33,12 +34,13 @@ class Spree::Admin::UserSessionsController < Devise::SessionsController
33
34
  end
34
35
 
35
36
  private
36
- def accurate_title
37
- Spree.t(:login)
38
- end
39
37
 
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
38
+ def accurate_title
39
+ I18n.t('spree.login')
40
+ end
41
+
42
+ def redirect_back_or_default(default)
43
+ redirect_to(session["spree_user_return_to"] || default)
44
+ session["spree_user_return_to"] = nil
45
+ end
44
46
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::UserConfirmationsController < Devise::ConfirmationsController
2
4
  helper 'spree/base', 'spree/store'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::UserPasswordsController < Devise::PasswordsController
2
4
  helper 'spree/base', 'spree/store'
3
5
 
@@ -16,8 +18,9 @@ class Spree::UserPasswordsController < Devise::PasswordsController
16
18
  def create
17
19
  self.resource = resource_class.send_reset_password_instructions(params[resource_name])
18
20
 
21
+ set_flash_message(:notice, :send_instructions) if is_navigational_format?
22
+
19
23
  if resource.errors.empty?
20
- set_flash_message(:notice, :send_instructions) if is_navigational_format?
21
24
  respond_with resource, location: spree.login_path
22
25
  else
23
26
  respond_with_navigational(resource) { render :new }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::UserRegistrationsController < Devise::RegistrationsController
2
4
  helper 'spree/base', 'spree/store'
3
5
 
@@ -25,6 +27,7 @@ class Spree::UserRegistrationsController < Devise::RegistrationsController
25
27
  end
26
28
 
27
29
  protected
30
+
28
31
  def translation_scope
29
32
  'devise.user_registrations'
30
33
  end
@@ -34,6 +37,7 @@ class Spree::UserRegistrationsController < Devise::RegistrationsController
34
37
  end
35
38
 
36
39
  private
40
+
37
41
  def spree_user_params
38
42
  params.require(:spree_user).permit(Spree::PermittedAttributes.user_attributes | [:email])
39
43
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::UserSessionsController < Devise::SessionsController
2
4
  helper 'spree/base', 'spree/store'
3
5
 
@@ -16,7 +18,7 @@ class Spree::UserSessionsController < Devise::SessionsController
16
18
  if spree_user_signed_in?
17
19
  respond_to do |format|
18
20
  format.html do
19
- flash[:success] = Spree.t(:logged_in_succesfully)
21
+ flash[:success] = I18n.t('spree.logged_in_succesfully')
20
22
  redirect_back_or_default(after_sign_in_path_for(spree_current_user))
21
23
  end
22
24
  format.js { render success_json }
@@ -44,7 +46,7 @@ class Spree::UserSessionsController < Devise::SessionsController
44
46
  private
45
47
 
46
48
  def accurate_title
47
- Spree.t(:login)
49
+ I18n.t('spree.login')
48
50
  end
49
51
 
50
52
  def redirect_back_or_default(default)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::UsersController < Spree::StoreController
2
4
  skip_before_action :set_current_order, only: :show, raise: false
3
5
  prepend_before_action :load_object, only: [:show, :edit, :update]
@@ -24,34 +26,37 @@ class Spree::UsersController < Spree::StoreController
24
26
  end
25
27
 
26
28
  def update
27
- if @user.update_attributes(user_params)
29
+ if @user.update(user_params)
30
+ spree_current_user.reload
31
+
28
32
  if params[:user][:password].present?
29
33
  # this logic needed b/c devise wants to log us out after password changes
30
34
  unless Spree::Auth::Config[:signout_after_password_change]
31
35
  bypass_sign_in(@user)
32
36
  end
33
37
  end
34
- redirect_to spree.account_url, notice: Spree.t(:account_updated)
38
+ redirect_to spree.account_url, notice: I18n.t('spree.account_updated')
35
39
  else
36
40
  render :edit
37
41
  end
38
42
  end
39
43
 
40
44
  private
41
- def user_params
42
- params.require(:user).permit(Spree::PermittedAttributes.user_attributes | [:email])
43
- end
44
45
 
45
- def load_object
46
- @user ||= spree_current_user
47
- authorize! params[:action].to_sym, @user
48
- end
46
+ def user_params
47
+ params.require(:user).permit(Spree::PermittedAttributes.user_attributes | [:email])
48
+ end
49
49
 
50
- def authorize_actions
51
- authorize! params[:action].to_sym, Spree::User.new
52
- end
50
+ def load_object
51
+ @user ||= Spree::User.find_by(id: spree_current_user&.id)
52
+ authorize! params[:action].to_sym, @user
53
+ end
53
54
 
54
- def accurate_title
55
- Spree.t(:my_account)
56
- end
55
+ def authorize_actions
56
+ authorize! params[:action].to_sym, Spree::User.new
57
+ end
58
+
59
+ def accurate_title
60
+ I18n.t('spree.my_account')
61
+ end
57
62
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Admin
5
+ module BaseControllerDecorator
6
+ protected
7
+
8
+ def model_class
9
+ const_name = controller_name.classify
10
+ if Spree.const_defined?(const_name, false)
11
+ return "Spree::#{const_name}".constantize
12
+ end
13
+
14
+ nil
15
+ end
16
+
17
+ ::Spree::Admin::BaseController.prepend self
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree::Admin::Orders::CustomerDetailsControllerDecorator
4
+ def self.prepended(base)
5
+ base.before_action :check_authorization
6
+ end
7
+
8
+ private
9
+
10
+ def check_authorization
11
+ load_order
12
+ session[:access_token] ||= params[:token]
13
+
14
+ resource = @order
15
+ action = params[:action].to_sym
16
+ action = :edit if action == :show # show route renders :edit for this controller
17
+
18
+ authorize! action, resource, session[:access_token]
19
+ end
20
+
21
+ Spree::Admin::Orders::CustomerDetailsController.prepend self
22
+ end