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,12 +1,12 @@
1
1
  <% if spree_current_user %>
2
2
  <ul id="login-nav" class="inline-menu">
3
- <li data-hook="user-logged-in-as"><%= Spree.t(:logged_in_as) %>: <%= spree_current_user.email %></li>
4
- <li data-hook="user-account-link" class='fa fa-user'><%= link_to Spree.t(:account), spree.edit_admin_user_path(spree_current_user) %></li>
5
- <li data-hook="user-logout-link" class='fa fa-sign-out'><%= link_to Spree.t(:logout), spree.admin_logout_path %></li>
3
+ <li data-hook="user-logged-in-as"><%= I18n.t('spree.logged_in_as') %>: <%= spree_current_user.email %></li>
4
+ <li data-hook="user-account-link" class='fa fa-user'><%= link_to I18n.t('spree.account'), spree.edit_admin_user_path(spree_current_user) %></li>
5
+ <li data-hook="user-logout-link" class='fa fa-sign-out'><%= link_to I18n.t('spree.logout'), spree.admin_logout_path %></li>
6
6
 
7
7
  <% if spree.respond_to? :root_path %>
8
8
  <li data-hook="store-frontend-link" class='fa fa-external-link'>
9
- <%= link_to Spree.t(:back_to_store), spree.root_path, target: '_blank' %>
9
+ <%= link_to I18n.t('spree.back_to_store'), spree.root_path, target: '_blank' %>
10
10
  </li>
11
11
  <% end %>
12
12
  </ul>
@@ -1,21 +1,21 @@
1
1
  <%= render partial: 'spree/shared/error_messages', locals: { target: @user } %>
2
- <h1><%= Spree.t(:registration) %></h1>
2
+ <h1><%= I18n.t('spree.registration') %></h1>
3
3
  <div id="registration" data-hook>
4
4
  <div id="account" class="columns alpha eight">
5
5
  <%= render template: 'spree/user_sessions/new' %>
6
6
  </div>
7
7
  <% if Spree::Config[:allow_guest_checkout] %>
8
8
  <div id="guest_checkout" data-hook class="columns omega eight">
9
- <h6><%= Spree.t(:guest_user_account) %></h6>
9
+ <h6><%= I18n.t('spree.guest_user_account') %></h6>
10
10
  <% if flash[:registration_error] %>
11
11
  <div class='flash error'><%= flash[:registration_error] %></div>
12
12
  <% end %>
13
13
  <%= form_for @order, url: update_checkout_registration_path, method: :put, html: { id: 'checkout_form_registration' } do |f| %>
14
14
  <p>
15
- <%= f.label :email, Spree.t(:email) %><br />
15
+ <%= f.label :email, I18n.t('spree.email') %><br />
16
16
  <%= f.email_field :email, class: 'title' %>
17
17
  </p>
18
- <p><%= f.submit Spree.t(:continue), class: 'button primary' %></p>
18
+ <p><%= f.submit I18n.t('spree.continue'), class: 'button primary' %></p>
19
19
  <% end %>
20
20
  </div>
21
21
  <% end %>
@@ -1,18 +1,18 @@
1
1
  <%= form_for Spree::User.new, as: :spree_user, url: spree.create_new_session_path do |f| %>
2
2
  <div id="password-credentials">
3
3
  <p>
4
- <%= f.label :email, Spree.t(:email) %><br />
4
+ <%= f.label :email, I18n.t('spree.email') %><br />
5
5
  <%= f.email_field :email, class: 'title', tabindex: 1, autofocus: true %>
6
6
  </p>
7
7
  <p>
8
- <%= f.label :password, Spree.t(:password) %><br />
8
+ <%= f.label :password, I18n.t('spree.password') %><br />
9
9
  <%= f.password_field :password, class: 'title', tabindex: 2 %>
10
10
  </p>
11
11
  </div>
12
12
  <p>
13
13
  <%= f.check_box :remember_me, tabindex: 3 %>
14
- <%= f.label :remember_me, Spree.t(:remember_me) %>
14
+ <%= f.label :remember_me, I18n.t('spree.remember_me') %>
15
15
  </p>
16
16
 
17
- <p><%= f.submit Spree.t(:login), class: 'button primary', tabindex: 4 %></p>
17
+ <p><%= f.submit I18n.t('spree.login'), class: 'button primary', tabindex: 4 %></p>
18
18
  <% end %>
@@ -1,6 +1,2 @@
1
- <% if spree_current_user %>
2
- <li><%= link_to Spree.t(:my_account), spree.account_path %></li>
3
- <li><%= link_to Spree.t(:logout), spree.logout_path %></li>
4
- <% else %>
5
- <li id="link-to-login"><%= link_to Spree.t(:login), spree.login_path %></li>
6
- <% end %>
1
+ <% Spree::Deprecation.warn "spree/shared/login_bar has moved to spree/shared/login_bar_items" %>
2
+ <%= render 'spree/shared/login_bar_items' %>
@@ -0,0 +1,6 @@
1
+ <% if spree_current_user %>
2
+ <li><%= link_to I18n.t('spree.my_account'), spree.account_path %></li>
3
+ <li><%= link_to I18n.t('spree.logout'), spree.logout_path, method: Devise.sign_out_via %></li>
4
+ <% else %>
5
+ <li id="link-to-login"><%= link_to I18n.t('spree.login'), spree.login_path %></li>
6
+ <% end %>
@@ -1,15 +1,15 @@
1
1
  <p>
2
- <%= f.label :email, Spree.t(:email) %><br />
2
+ <%= f.label :email, I18n.t('spree.email') %><br />
3
3
  <%= f.email_field :email, class: 'title' %>
4
4
  </p>
5
5
  <div id="password-credentials">
6
6
  <p>
7
- <%= f.label :password, Spree.t(:password) %><br />
7
+ <%= f.label :password, I18n.t('spree.password') %><br />
8
8
  <%= f.password_field :password, class: 'title' %>
9
9
  </p>
10
10
 
11
11
  <p>
12
- <%= f.label :password_confirmation, Spree.t(:confirm_password) %><br />
12
+ <%= f.label :password_confirmation, I18n.t('spree.confirm_password') %><br />
13
13
  <%= f.password_field :password_confirmation, class: 'title' %>
14
14
  </p>
15
15
  </div>
@@ -1,17 +1,17 @@
1
1
  <%= render partial: 'spree/shared/error_messages', locals: { target: @spree_user } %>
2
2
  <div id="change-password">
3
- <h6><%= Spree.t(:change_my_password) %></h6>
3
+ <h6><%= I18n.t('spree.change_my_password') %></h6>
4
4
 
5
5
  <%= form_for @spree_user, as: :spree_user, url: spree.update_password_path, method: :put do |f| %>
6
6
  <p>
7
- <%= f.label :password, Spree.t(:password) %><br />
7
+ <%= f.label :password, I18n.t('spree.password') %><br />
8
8
  <%= f.password_field :password %><br />
9
9
  </p>
10
10
  <p>
11
- <%= f.label :password_confirmation, Spree.t(:confirm_password) %><br />
11
+ <%= f.label :password_confirmation, I18n.t('spree.confirm_password') %><br />
12
12
  <%= f.password_field :password_confirmation %><br />
13
13
  </p>
14
14
  <%= f.hidden_field :reset_password_token %>
15
- <%= f.submit Spree.t(:update), class: 'button primary' %>
15
+ <%= f.submit I18n.t('spree.update'), class: 'button primary' %>
16
16
  <% end %>
17
17
  </div>
@@ -1,17 +1,15 @@
1
- <%= render partial: 'spree/shared/error_messages', locals: { target: @spree_user } %>
2
-
3
1
  <div id="forgot-password">
4
- <h6><%= Spree.t(:forgot_password) %></h6>
2
+ <h6><%= I18n.t('spree.forgot_password') %></h6>
5
3
 
6
- <p><%= Spree.t(:instructions_to_reset_password) %></p>
4
+ <p><%= I18n.t('spree.instructions_to_reset_password') %></p>
7
5
 
8
6
  <%= form_for Spree::User.new, as: :spree_user, url: spree.reset_password_path do |f| %>
9
7
  <p>
10
- <%= f.label :email, Spree.t(:email) %><br />
11
- <%= f.email_field :email %>
8
+ <%= f.label :email, I18n.t('spree.email') %><br />
9
+ <%= f.email_field :email, required: true %>
12
10
  </p>
13
11
  <p>
14
- <%= f.submit Spree.t(:reset_password), class: 'button primary' %>
12
+ <%= f.submit I18n.t('spree.reset_password'), class: 'button primary' %>
15
13
  </p>
16
14
  <% end %>
17
15
  </div>
@@ -3,16 +3,16 @@
3
3
  <%= render 'spree/shared/error_messages', target: resource %>
4
4
 
5
5
  <div id="new-customer">
6
- <h6><%= Spree.t(:new_customer) %></h6>
6
+ <h6><%= I18n.t('spree.new_customer') %></h6>
7
7
 
8
8
  <div data-hook="signup">
9
9
  <%= form_for resource, as: :spree_user, url: spree.registration_path(resource) do |f| %>
10
10
  <div data-hook="signup_inside_form">
11
11
  <%= render partial: 'spree/shared/user_form', locals: { f: f } %>
12
- <p><%= f.submit Spree.t(:create), class: 'button primary' %></p>
12
+ <p><%= f.submit I18n.t('spree.create'), class: 'button primary' %></p>
13
13
  </div>
14
14
  <% end %>
15
- <%= Spree.t(:or) %>&nbsp;<%= link_to Spree.t(:login_as_existing), spree.login_path %>
15
+ <%= I18n.t('spree.or') %>&nbsp;<%= link_to I18n.t('spree.login_as_existing'), spree.login_path %>
16
16
 
17
17
  </div>
18
18
 
@@ -1,4 +1,4 @@
1
1
  <div style="height:50px; padding-top:20px;">
2
- <strong><%= Spree.t(:authorization_failure) %></strong>
2
+ <strong><%= I18n.t('spree.authorization_failure') %></strong>
3
3
  </div>
4
4
  <!-- Add your own custom access denied message here if you like -->
@@ -4,10 +4,10 @@
4
4
 
5
5
  <% @body_id = 'login' %>
6
6
  <div id="existing-customer">
7
- <h6><%= Spree.t(:login_as_existing) %></h6>
7
+ <h6><%= I18n.t('spree.login_as_existing') %></h6>
8
8
  <div data-hook="login">
9
9
  <%= render partial: 'spree/shared/login' %>
10
- <%= Spree.t(:or) %>&nbsp;<%= link_to Spree.t(:create_a_new_account), spree.signup_path %> | <%= link_to Spree.t(:forgot_password), spree.recover_password_path %>
10
+ <%= I18n.t('spree.or') %>&nbsp;<%= link_to I18n.t('spree.create_a_new_account'), spree.signup_path %> | <%= link_to I18n.t('spree.forgot_password'), spree.recover_password_path %>
11
11
  </div>
12
12
  </div>
13
13
  <div data-hook="login_extras"></div>
@@ -1,13 +1,13 @@
1
1
  <%= render partial: 'spree/shared/error_messages', locals: { target: @user } %>
2
2
 
3
3
  <div id="edit-account">
4
- <h1><%= Spree.t(:editing_user) %></h1>
4
+ <h1><%= I18n.t('spree.editing_user') %></h1>
5
5
 
6
6
  <div data-hook="account_edit">
7
7
  <%= form_for Spree::User.new, as: @user, url: spree.user_path(@user), method: :put do |f| %>
8
8
  <%= render partial: 'spree/shared/user_form', locals: { f: f } %>
9
9
  <p>
10
- <%= f.submit Spree.t(:update), class: 'button primary' %>
10
+ <%= f.submit I18n.t('spree.update'), class: 'button primary' %>
11
11
  </p>
12
12
  <% end %>
13
13
  </div>
@@ -2,24 +2,24 @@
2
2
 
3
3
  <div data-hook="account_summary" class="account-summary">
4
4
  <dl id="user-info">
5
- <dt><%= Spree.t(:email) %></dt>
6
- <dd><%= @user.email %> (<%= link_to Spree.t(:edit), spree.edit_account_path %>)</dd>
5
+ <dt><%= I18n.t('spree.email') %></dt>
6
+ <dd><%= @user.email %> (<%= link_to I18n.t('spree.edit'), spree.edit_account_path %>)</dd>
7
7
  </dl>
8
8
  </div>
9
9
 
10
10
  <div data-hook="account_my_orders" class="account-my-orders">
11
11
 
12
- <h3><%= Spree.t(:my_orders) %></h3>
12
+ <h3><%= I18n.t('spree.my_orders') %></h3>
13
13
  <% if @orders.present? %>
14
14
  <table class="order-summary">
15
15
  <thead>
16
16
  <tr>
17
17
  <th class="order-number"><%= I18n.t(:number, scope: 'activerecord.attributes.spree/order') %></th>
18
- <th class="order-date"><%= Spree.t(:date) %></th>
19
- <th class="order-status"><%= Spree.t(:status) %></th>
20
- <th class="order-payment-state"><%= Spree.t(:payment_state) %></th>
21
- <th class="order-shipment-state"><%= Spree.t(:shipment_state) %></th>
22
- <th class="order-total"><%= Spree.t(:total) %></th>
18
+ <th class="order-date"><%= I18n.t('spree.date') %></th>
19
+ <th class="order-status"><%= I18n.t('spree.status') %></th>
20
+ <th class="order-payment-state"><%= I18n.t('spree.payment_state') %></th>
21
+ <th class="order-shipment-state"><%= I18n.t('spree.shipment_state') %></th>
22
+ <th class="order-total"><%= I18n.t('spree.total') %></th>
23
23
  </tr>
24
24
  </thead>
25
25
  <tbody>
@@ -27,16 +27,16 @@
27
27
  <tr class="<%= cycle('even', 'odd') %>">
28
28
  <td class="order-number"><%= link_to order.number, order_url(order) %></td>
29
29
  <td class="order-date"><%= l order.completed_at.to_date %></td>
30
- <td class="order-status"><%= Spree.t("order_state.#{order.state}").titleize %></td>
31
- <td class="order-payment-state"><%= Spree.t("payment_states.#{order.payment_state}").titleize if order.payment_state %></td>
32
- <td class="order-shipment-state"><%= Spree.t("shipment_states.#{order.shipment_state}").titleize if order.shipment_state %></td>
30
+ <td class="order-status"><%= I18n.t("spree.order_state.#{order.state}").titleize %></td>
31
+ <td class="order-payment-state"><%= I18n.t("spree.payment_states.#{order.payment_state}").titleize if order.payment_state %></td>
32
+ <td class="order-shipment-state"><%= I18n.t("spree.shipment_states.#{order.shipment_state}").titleize if order.shipment_state %></td>
33
33
  <td class="order-total"><%= order.display_total %></td>
34
34
  </tr>
35
35
  <% end %>
36
36
  </tbody>
37
37
  </table>
38
38
  <% else %>
39
- <p><%= Spree.t(:you_have_no_orders_yet) %></p>
39
+ <p><%= I18n.t('spree.you_have_no_orders_yet') %></p>
40
40
  <% end %>
41
41
  <br />
42
42
 
@@ -1,43 +1,50 @@
1
- # encoding: UTF-8
1
+ # frozen_string_literal: true
2
+
3
+ $:.push File.expand_path('lib', __dir__)
4
+ require 'spree/auth/version'
2
5
 
3
6
  Gem::Specification.new do |s|
4
- s.platform = Gem::Platform::RUBY
5
- s.name = "solidus_auth_devise"
6
- s.version = "2.0.0"
7
- s.summary = "Provides authentication and authorization services for use with Solidus by using Devise and CanCan."
8
- s.description = s.summary
7
+ s.platform = Gem::Platform::RUBY
8
+ s.name = "solidus_auth_devise"
9
+ s.version = Spree::Auth::VERSION
10
+ s.summary = "Provides authentication and authorization services for use with Solidus by using Devise and CanCan."
11
+ s.license = 'BSD-3-Clause'
9
12
 
10
- s.author = 'Solidus Team'
11
- s.email = 'contact@solidus.io'
13
+ s.author = 'Solidus Team'
14
+ s.email = 'contact@solidus.io'
15
+ s.homepage = 'https://github.com/solidusio/solidus_auth_devise'
12
16
 
13
- s.required_ruby_version = ">= 2.1"
14
- s.license = %q{BSD-3}
17
+ if s.respond_to?(:metadata)
18
+ s.metadata["homepage_uri"] = s.homepage if s.homepage
19
+ s.metadata["source_code_uri"] = s.homepage if s.homepage
20
+ end
15
21
 
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- spec/*`.split("\n")
18
- s.require_path = "lib"
19
- s.requirements << "none"
22
+ s.required_ruby_version = '~> 2.4'
20
23
 
21
- solidus_version = [">= 1.2.0", "< 3"]
24
+ s.files = Dir.chdir(File.expand_path(__dir__)) do
25
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ end
27
+ s.test_files = Dir['spec/**/*']
28
+ s.bindir = "exe"
29
+ s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
+ s.require_paths = ["lib"]
22
31
 
23
- s.add_dependency "solidus_core", solidus_version
24
- s.add_dependency "solidus_support", ">= 0.1.3"
32
+ solidus_version = [">= 2.6", "< 3"]
33
+
34
+ s.post_install_message = "
35
+ NOTE: Rails 6 has removed secret_token in favor of secret_key_base, which was deprecated in
36
+ Rails 5.2. solidus_auth_devise will keep using secret_token, when present, as the pepper. If
37
+ secret_token is undefined or not available, secret_key_base will be used instead.
38
+ ".strip.gsub(/ +/, ' ')
39
+
40
+ s.add_dependency "deface", "~> 1.0"
25
41
  s.add_dependency "devise", '~> 4.1'
26
42
  s.add_dependency "devise-encryptable", "0.2.0"
27
- s.add_dependency 'deface', '~> 1.0'
28
-
29
- s.add_development_dependency "capybara", "~> 2.14"
30
- s.add_development_dependency "capybara-screenshot"
31
- s.add_development_dependency "coffee-rails"
32
- s.add_development_dependency "database_cleaner", "~> 1.6"
33
- s.add_development_dependency "factory_girl", "~> 4.4"
34
- s.add_development_dependency "ffaker"
35
- s.add_development_dependency "poltergeist", "~> 1.5"
36
- s.add_development_dependency "rspec-rails", "~> 3.3"
37
- s.add_development_dependency "sass-rails"
38
- s.add_development_dependency "shoulda-matchers", "~> 3.1"
39
- s.add_development_dependency "simplecov", "~> 0.14"
43
+ s.add_dependency "paranoia", "~> 2.4"
44
+ s.add_dependency "solidus_core", solidus_version
45
+ s.add_dependency "solidus_support", "~> 0.5"
46
+
40
47
  s.add_development_dependency "solidus_backend", solidus_version
48
+ s.add_development_dependency "solidus_dev_support", ">= 0.3.0"
41
49
  s.add_development_dependency "solidus_frontend", solidus_version
42
- s.add_development_dependency "sqlite3"
43
50
  end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Spree::Admin::BaseController, type: :controller do
6
+ describe '#unauthorized_redirect' do
7
+ controller(described_class) do
8
+ def index; authorize!(:read, :something); end
9
+ end
10
+
11
+ before do
12
+ stub_spree_preferences(Spree::Config, redirect_back_on_unauthorized: true)
13
+ end
14
+
15
+ context "when user is logged in" do
16
+ before { sign_in(create(:user)) }
17
+
18
+ context "when http_referrer is not present" do
19
+ it "redirects to unauthorized path" do
20
+ get :index
21
+ expect(response).to redirect_to(spree.admin_unauthorized_path)
22
+ end
23
+ end
24
+
25
+ context "when http_referrer is present" do
26
+ before { request.env['HTTP_REFERER'] = '/redirect' }
27
+
28
+ it "redirects back" do
29
+ get :index
30
+ expect(response).to redirect_to('/redirect')
31
+ end
32
+ end
33
+ end
34
+
35
+ context "when user is not logged in" do
36
+ context "when http_referrer is not present" do
37
+ it "redirects to login path" do
38
+ get :index
39
+ expect(response).to redirect_to(spree.admin_login_path)
40
+ end
41
+ end
42
+
43
+ context "when http_referrer is present" do
44
+ before { request.env['HTTP_REFERER'] = '/redirect' }
45
+
46
+ it "redirects back" do
47
+ get :index
48
+ expect(response).to redirect_to('/redirect')
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Spree::Admin::UserPasswordsController, type: :controller do
4
+ before { @request.env['devise.mapping'] = Devise.mappings[:spree_user] }
5
+
6
+ describe '#create' do
7
+ it 'responds with success' do
8
+ post :create, params: { spree_user: { email: 'admin@example.com' } }
9
+
10
+ expect(assigns[:spree_user].email).to eq('admin@example.com')
11
+ expect(response.code).to eq('200')
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Spree::BaseController, type: :controller do
6
+ describe '#unauthorized_redirect' do
7
+ controller(described_class) do
8
+ def index; authorize!(:read, :something); end
9
+ end
10
+
11
+ before do
12
+ stub_spree_preferences(Spree::Config, redirect_back_on_unauthorized: true)
13
+ end
14
+
15
+ context "when user is logged in" do
16
+ before { sign_in(create(:user)) }
17
+
18
+ context "when http_referrer is not present" do
19
+ it "redirects to unauthorized path" do
20
+ get :index
21
+ expect(response).to redirect_to(spree.unauthorized_path)
22
+ end
23
+ end
24
+
25
+ context "when http_referrer is present" do
26
+ before { request.env['HTTP_REFERER'] = '/redirect' }
27
+
28
+ it "redirects back" do
29
+ get :index
30
+ expect(response).to redirect_to('/redirect')
31
+ end
32
+ end
33
+ end
34
+
35
+ context "when user is not logged in" do
36
+ context "when http_referrer is not present" do
37
+ it "redirects to login path" do
38
+ get :index
39
+ expect(response).to redirect_to(spree.login_path)
40
+ end
41
+ end
42
+
43
+ context "when http_referrer is present" do
44
+ before { request.env['HTTP_REFERER'] = '/redirect' }
45
+
46
+ it "redirects back" do
47
+ get :index
48
+ expect(response).to redirect_to('/redirect')
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end