solidus_auth_devise 2.0.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_auth_devise might be problematic. Click here for more details.

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