devise 4.4.3 → 4.7.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +98 -4
- data/MIT-LICENSE +2 -1
- data/README.md +96 -59
- data/app/controllers/devise/passwords_controller.rb +1 -0
- data/app/controllers/devise/registrations_controller.rb +26 -8
- data/app/controllers/devise_controller.rb +3 -3
- data/app/helpers/devise_helper.rb +21 -18
- data/app/mailers/devise/mailer.rb +5 -5
- data/app/views/devise/confirmations/new.html.erb +1 -1
- data/app/views/devise/passwords/edit.html.erb +3 -3
- data/app/views/devise/passwords/new.html.erb +1 -1
- data/app/views/devise/registrations/edit.html.erb +4 -4
- data/app/views/devise/registrations/new.html.erb +3 -3
- data/app/views/devise/sessions/new.html.erb +3 -3
- data/app/views/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/devise/shared/_links.html.erb +7 -7
- data/app/views/devise/unlocks/new.html.erb +1 -1
- data/config/locales/en.yml +3 -2
- data/lib/devise.rb +4 -4
- data/lib/devise/controllers/helpers.rb +8 -8
- data/lib/devise/controllers/sign_in_out.rb +6 -3
- data/lib/devise/controllers/url_helpers.rb +1 -1
- data/lib/devise/failure_app.rb +25 -5
- data/lib/devise/hooks/timeoutable.rb +2 -2
- data/lib/devise/mapping.rb +1 -1
- data/lib/devise/models/authenticatable.rb +44 -45
- data/lib/devise/models/confirmable.rb +18 -3
- data/lib/devise/models/database_authenticatable.rb +50 -12
- data/lib/devise/models/lockable.rb +3 -3
- data/lib/devise/models/recoverable.rb +2 -2
- data/lib/devise/models/registerable.rb +2 -0
- data/lib/devise/models/rememberable.rb +1 -1
- data/lib/devise/models/trackable.rb +9 -2
- data/lib/devise/models/validatable.rb +1 -1
- data/lib/devise/parameter_filter.rb +2 -0
- data/lib/devise/parameter_sanitizer.rb +13 -1
- data/lib/devise/rails/routes.rb +6 -6
- data/lib/devise/secret_key_finder.rb +2 -0
- data/lib/devise/strategies/authenticatable.rb +1 -1
- data/lib/devise/strategies/database_authenticatable.rb +6 -1
- data/lib/devise/test/controller_helpers.rb +4 -2
- data/lib/devise/test/integration_helpers.rb +1 -1
- data/lib/devise/version.rb +1 -1
- data/lib/generators/active_record/devise_generator.rb +9 -9
- data/lib/generators/devise/controllers_generator.rb +1 -1
- data/lib/generators/devise/devise_generator.rb +1 -1
- data/lib/generators/devise/install_generator.rb +1 -5
- data/lib/generators/devise/orm_helpers.rb +2 -2
- data/lib/generators/devise/views_generator.rb +1 -1
- data/lib/generators/mongoid/devise_generator.rb +5 -5
- data/lib/generators/templates/README +9 -1
- data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +1 -1
- data/lib/generators/templates/devise.rb +34 -6
- data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +5 -1
- data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +10 -2
- data/lib/generators/templates/simple_form_for/passwords/new.html.erb +4 -1
- data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +11 -3
- data/lib/generators/templates/simple_form_for/registrations/new.html.erb +11 -3
- data/lib/generators/templates/simple_form_for/sessions/new.html.erb +7 -2
- data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +4 -1
- metadata +7 -312
- data/.gitignore +0 -10
- data/.travis.yml +0 -68
- data/.yardopts +0 -9
- data/CODE_OF_CONDUCT.md +0 -22
- data/CONTRIBUTING.md +0 -79
- data/Gemfile +0 -39
- data/Gemfile.lock +0 -193
- data/ISSUE_TEMPLATE.md +0 -19
- data/Rakefile +0 -37
- data/bin/test +0 -13
- data/devise.gemspec +0 -28
- data/devise.png +0 -0
- data/gemfiles/Gemfile.rails-4.1-stable +0 -32
- data/gemfiles/Gemfile.rails-4.1-stable.lock +0 -171
- data/gemfiles/Gemfile.rails-4.2-stable +0 -32
- data/gemfiles/Gemfile.rails-4.2-stable.lock +0 -192
- data/gemfiles/Gemfile.rails-5.0-stable +0 -33
- data/gemfiles/Gemfile.rails-5.0-stable.lock +0 -192
- data/gemfiles/Gemfile.rails-5.2-rc1 +0 -26
- data/gemfiles/Gemfile.rails-5.2-rc1.lock +0 -201
- data/guides/bug_report_templates/integration_test.rb +0 -106
- data/test/controllers/custom_registrations_controller_test.rb +0 -42
- data/test/controllers/custom_strategy_test.rb +0 -66
- data/test/controllers/helper_methods_test.rb +0 -24
- data/test/controllers/helpers_test.rb +0 -318
- data/test/controllers/inherited_controller_i18n_messages_test.rb +0 -53
- data/test/controllers/internal_helpers_test.rb +0 -129
- data/test/controllers/load_hooks_controller_test.rb +0 -21
- data/test/controllers/passwords_controller_test.rb +0 -34
- data/test/controllers/sessions_controller_test.rb +0 -108
- data/test/controllers/url_helpers_test.rb +0 -67
- data/test/delegator_test.rb +0 -21
- data/test/devise_test.rb +0 -109
- data/test/failure_app_test.rb +0 -340
- data/test/generators/active_record_generator_test.rb +0 -130
- data/test/generators/controllers_generator_test.rb +0 -50
- data/test/generators/devise_generator_test.rb +0 -41
- data/test/generators/install_generator_test.rb +0 -26
- data/test/generators/mongoid_generator_test.rb +0 -25
- data/test/generators/views_generator_test.rb +0 -105
- data/test/helpers/devise_helper_test.rb +0 -51
- data/test/integration/authenticatable_test.rb +0 -706
- data/test/integration/confirmable_test.rb +0 -326
- data/test/integration/database_authenticatable_test.rb +0 -97
- data/test/integration/http_authenticatable_test.rb +0 -114
- data/test/integration/lockable_test.rb +0 -242
- data/test/integration/mounted_engine_test.rb +0 -38
- data/test/integration/omniauthable_test.rb +0 -148
- data/test/integration/recoverable_test.rb +0 -349
- data/test/integration/registerable_test.rb +0 -365
- data/test/integration/rememberable_test.rb +0 -219
- data/test/integration/timeoutable_test.rb +0 -186
- data/test/integration/trackable_test.rb +0 -99
- data/test/mailers/confirmation_instructions_test.rb +0 -117
- data/test/mailers/email_changed_test.rb +0 -132
- data/test/mailers/mailer_test.rb +0 -20
- data/test/mailers/reset_password_instructions_test.rb +0 -98
- data/test/mailers/unlock_instructions_test.rb +0 -93
- data/test/mapping_test.rb +0 -136
- data/test/models/authenticatable_test.rb +0 -25
- data/test/models/confirmable_test.rb +0 -549
- data/test/models/database_authenticatable_test.rb +0 -283
- data/test/models/lockable_test.rb +0 -352
- data/test/models/omniauthable_test.rb +0 -9
- data/test/models/recoverable_test.rb +0 -263
- data/test/models/registerable_test.rb +0 -9
- data/test/models/rememberable_test.rb +0 -184
- data/test/models/serializable_test.rb +0 -60
- data/test/models/timeoutable_test.rb +0 -53
- data/test/models/trackable_test.rb +0 -62
- data/test/models/validatable_test.rb +0 -121
- data/test/models_test.rb +0 -155
- data/test/omniauth/config_test.rb +0 -61
- data/test/omniauth/url_helpers_test.rb +0 -53
- data/test/orm/active_record.rb +0 -24
- data/test/orm/mongoid.rb +0 -15
- data/test/parameter_sanitizer_test.rb +0 -77
- data/test/rails_app/Rakefile +0 -6
- data/test/rails_app/app/active_record/admin.rb +0 -8
- data/test/rails_app/app/active_record/shim.rb +0 -4
- data/test/rails_app/app/active_record/user.rb +0 -20
- data/test/rails_app/app/active_record/user_on_engine.rb +0 -9
- data/test/rails_app/app/active_record/user_on_main_app.rb +0 -9
- data/test/rails_app/app/active_record/user_with_validations.rb +0 -12
- data/test/rails_app/app/active_record/user_without_email.rb +0 -10
- data/test/rails_app/app/controllers/admins/sessions_controller.rb +0 -8
- data/test/rails_app/app/controllers/admins_controller.rb +0 -8
- data/test/rails_app/app/controllers/application_controller.rb +0 -13
- data/test/rails_app/app/controllers/application_with_fake_engine.rb +0 -32
- data/test/rails_app/app/controllers/custom/registrations_controller.rb +0 -33
- data/test/rails_app/app/controllers/home_controller.rb +0 -31
- data/test/rails_app/app/controllers/publisher/registrations_controller.rb +0 -4
- data/test/rails_app/app/controllers/publisher/sessions_controller.rb +0 -4
- data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +0 -16
- data/test/rails_app/app/controllers/users_controller.rb +0 -33
- data/test/rails_app/app/helpers/application_helper.rb +0 -5
- data/test/rails_app/app/mailers/users/from_proc_mailer.rb +0 -5
- data/test/rails_app/app/mailers/users/mailer.rb +0 -5
- data/test/rails_app/app/mailers/users/reply_to_mailer.rb +0 -6
- data/test/rails_app/app/mongoid/admin.rb +0 -31
- data/test/rails_app/app/mongoid/shim.rb +0 -25
- data/test/rails_app/app/mongoid/user.rb +0 -50
- data/test/rails_app/app/mongoid/user_on_engine.rb +0 -41
- data/test/rails_app/app/mongoid/user_on_main_app.rb +0 -41
- data/test/rails_app/app/mongoid/user_with_validations.rb +0 -37
- data/test/rails_app/app/mongoid/user_without_email.rb +0 -35
- data/test/rails_app/app/views/admins/index.html.erb +0 -1
- data/test/rails_app/app/views/admins/sessions/new.html.erb +0 -2
- data/test/rails_app/app/views/home/admin_dashboard.html.erb +0 -1
- data/test/rails_app/app/views/home/index.html.erb +0 -1
- data/test/rails_app/app/views/home/join.html.erb +0 -1
- data/test/rails_app/app/views/home/private.html.erb +0 -1
- data/test/rails_app/app/views/home/user_dashboard.html.erb +0 -1
- data/test/rails_app/app/views/layouts/application.html.erb +0 -24
- data/test/rails_app/app/views/users/edit_form.html.erb +0 -1
- data/test/rails_app/app/views/users/index.html.erb +0 -1
- data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +0 -1
- data/test/rails_app/app/views/users/sessions/new.html.erb +0 -1
- data/test/rails_app/bin/bundle +0 -3
- data/test/rails_app/bin/rails +0 -4
- data/test/rails_app/bin/rake +0 -4
- data/test/rails_app/config.ru +0 -4
- data/test/rails_app/config/application.rb +0 -48
- data/test/rails_app/config/boot.rb +0 -27
- data/test/rails_app/config/database.yml +0 -18
- data/test/rails_app/config/environment.rb +0 -7
- data/test/rails_app/config/environments/development.rb +0 -32
- data/test/rails_app/config/environments/production.rb +0 -88
- data/test/rails_app/config/environments/test.rb +0 -47
- data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -9
- data/test/rails_app/config/initializers/devise.rb +0 -182
- data/test/rails_app/config/initializers/inflections.rb +0 -4
- data/test/rails_app/config/initializers/secret_token.rb +0 -5
- data/test/rails_app/config/initializers/session_store.rb +0 -3
- data/test/rails_app/config/routes.rb +0 -128
- data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -77
- data/test/rails_app/db/schema.rb +0 -57
- data/test/rails_app/lib/shared_admin.rb +0 -23
- data/test/rails_app/lib/shared_user.rb +0 -32
- data/test/rails_app/lib/shared_user_without_email.rb +0 -28
- data/test/rails_app/lib/shared_user_without_omniauth.rb +0 -15
- data/test/rails_app/public/404.html +0 -26
- data/test/rails_app/public/422.html +0 -26
- data/test/rails_app/public/500.html +0 -26
- data/test/rails_app/public/favicon.ico +0 -0
- data/test/rails_test.rb +0 -11
- data/test/routes_test.rb +0 -281
- data/test/secret_key_finder_test.rb +0 -97
- data/test/support/action_controller/record_identifier.rb +0 -12
- data/test/support/assertions.rb +0 -30
- data/test/support/helpers.rb +0 -83
- data/test/support/http_method_compatibility.rb +0 -53
- data/test/support/integration.rb +0 -95
- data/test/support/locale/en.yml +0 -8
- data/test/support/mongoid.yml +0 -6
- data/test/support/webrat/integrations/rails.rb +0 -35
- data/test/test/controller_helpers_test.rb +0 -193
- data/test/test/integration_helpers_test.rb +0 -34
- data/test/test_helper.rb +0 -36
- data/test/test_models.rb +0 -35
@@ -39,6 +39,7 @@ class Devise::PasswordsController < DeviseController
|
|
39
39
|
if Devise.sign_in_after_reset_password
|
40
40
|
flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
|
41
41
|
set_flash_message!(:notice, flash_message)
|
42
|
+
resource.after_database_authentication
|
42
43
|
sign_in(resource_name, resource)
|
43
44
|
else
|
44
45
|
set_flash_message!(:notice, :updated_not_active)
|
@@ -50,12 +50,9 @@ class Devise::RegistrationsController < DeviseController
|
|
50
50
|
resource_updated = update_resource(resource, account_update_params)
|
51
51
|
yield resource if block_given?
|
52
52
|
if resource_updated
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
set_flash_message :notice, flash_key
|
57
|
-
end
|
58
|
-
bypass_sign_in resource, scope: resource_name
|
53
|
+
set_flash_message_for_update(resource, prev_unconfirmed_email)
|
54
|
+
bypass_sign_in resource, scope: resource_name if sign_in_after_change_password?
|
55
|
+
|
59
56
|
respond_with resource, location: after_update_path_for(resource)
|
60
57
|
else
|
61
58
|
clean_up_passwords resource
|
@@ -112,7 +109,7 @@ class Devise::RegistrationsController < DeviseController
|
|
112
109
|
# The path used after sign up. You need to overwrite this method
|
113
110
|
# in your own RegistrationsController.
|
114
111
|
def after_sign_up_path_for(resource)
|
115
|
-
after_sign_in_path_for(resource)
|
112
|
+
after_sign_in_path_for(resource) if is_navigational_format?
|
116
113
|
end
|
117
114
|
|
118
115
|
# The path used after sign up for inactive accounts. You need to overwrite
|
@@ -127,7 +124,7 @@ class Devise::RegistrationsController < DeviseController
|
|
127
124
|
# The default url to be used after updating a resource. You need to overwrite
|
128
125
|
# this method in your own RegistrationsController.
|
129
126
|
def after_update_path_for(resource)
|
130
|
-
signed_in_root_path(resource)
|
127
|
+
sign_in_after_change_password? ? signed_in_root_path(resource) : new_session_path(resource_name)
|
131
128
|
end
|
132
129
|
|
133
130
|
# Authenticates the current scope and gets the current resource from the session.
|
@@ -147,4 +144,25 @@ class Devise::RegistrationsController < DeviseController
|
|
147
144
|
def translation_scope
|
148
145
|
'devise.registrations'
|
149
146
|
end
|
147
|
+
|
148
|
+
private
|
149
|
+
|
150
|
+
def set_flash_message_for_update(resource, prev_unconfirmed_email)
|
151
|
+
return unless is_flashing_format?
|
152
|
+
|
153
|
+
flash_key = if update_needs_confirmation?(resource, prev_unconfirmed_email)
|
154
|
+
:update_needs_confirmation
|
155
|
+
elsif sign_in_after_change_password?
|
156
|
+
:updated
|
157
|
+
else
|
158
|
+
:updated_but_not_signed_in
|
159
|
+
end
|
160
|
+
set_flash_message :notice, flash_key
|
161
|
+
end
|
162
|
+
|
163
|
+
def sign_in_after_change_password?
|
164
|
+
return true if account_update_params[:password].blank?
|
165
|
+
|
166
|
+
Devise.sign_in_after_change_password
|
167
|
+
end
|
150
168
|
end
|
@@ -22,7 +22,7 @@ class DeviseController < Devise.parent_controller.constantize
|
|
22
22
|
# Action Controller tests that forces _prefixes to be
|
23
23
|
# loaded before even having a request object.
|
24
24
|
#
|
25
|
-
# This method should be public as it is
|
25
|
+
# This method should be public as it is in ActionPack
|
26
26
|
# itself. Changing its visibility may break other gems.
|
27
27
|
def _prefixes #:nodoc:
|
28
28
|
@_prefixes ||= if self.class.scoped_views? && request && devise_mapping
|
@@ -112,7 +112,7 @@ MESSAGE
|
|
112
112
|
end
|
113
113
|
|
114
114
|
if authenticated && resource = warden.user(resource_name)
|
115
|
-
|
115
|
+
set_flash_message(:alert, 'already_authenticated', scope: 'devise.failure')
|
116
116
|
redirect_to after_sign_in_path_for(resource)
|
117
117
|
end
|
118
118
|
end
|
@@ -184,7 +184,7 @@ MESSAGE
|
|
184
184
|
options[:default] = Array(options[:default]).unshift(kind.to_sym)
|
185
185
|
options[:resource_name] = resource_name
|
186
186
|
options = devise_i18n_options(options)
|
187
|
-
I18n.t("#{options[:resource_name]}.#{kind}", options)
|
187
|
+
I18n.t("#{options[:resource_name]}.#{kind}", **options)
|
188
188
|
end
|
189
189
|
|
190
190
|
# Controllers inheriting DeviseController are advised to override this
|
@@ -1,27 +1,30 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module DeviseHelper
|
4
|
-
#
|
5
|
-
#
|
6
|
-
# copy the views to your application.
|
7
|
-
#
|
8
|
-
# This method is intended to stay simple and it is unlikely that we are going to change
|
9
|
-
# it to add more behavior or options.
|
4
|
+
# Retain this method for backwards compatibility, deprecated in favor of modifying the
|
5
|
+
# devise/shared/error_messages partial.
|
10
6
|
def devise_error_messages!
|
11
|
-
|
7
|
+
ActiveSupport::Deprecation.warn <<-DEPRECATION.strip_heredoc
|
8
|
+
[Devise] `DeviseHelper#devise_error_messages!` is deprecated and will be
|
9
|
+
removed in the next major version.
|
10
|
+
|
11
|
+
Devise now uses a partial under "devise/shared/error_messages" to display
|
12
|
+
error messages by default, and make them easier to customize. Update your
|
13
|
+
views changing calls from:
|
14
|
+
|
15
|
+
<%= devise_error_messages! %>
|
12
16
|
|
13
|
-
|
14
|
-
sentence = I18n.t("errors.messages.not_saved",
|
15
|
-
count: resource.errors.count,
|
16
|
-
resource: resource.class.model_name.human.downcase)
|
17
|
+
to:
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
20
|
+
|
21
|
+
To start customizing how errors are displayed, you can copy the partial
|
22
|
+
from devise to your `app/views` folder. Alternatively, you can run
|
23
|
+
`rails g devise:views` which will copy all of them again to your app.
|
24
|
+
DEPRECATION
|
25
|
+
|
26
|
+
return "" if resource.errors.empty?
|
24
27
|
|
25
|
-
|
28
|
+
render "devise/shared/error_messages", resource: resource
|
26
29
|
end
|
27
30
|
end
|
@@ -4,26 +4,26 @@ if defined?(ActionMailer)
|
|
4
4
|
class Devise::Mailer < Devise.parent_mailer.constantize
|
5
5
|
include Devise::Mailers::Helpers
|
6
6
|
|
7
|
-
def confirmation_instructions(record, token, opts={})
|
7
|
+
def confirmation_instructions(record, token, opts = {})
|
8
8
|
@token = token
|
9
9
|
devise_mail(record, :confirmation_instructions, opts)
|
10
10
|
end
|
11
11
|
|
12
|
-
def reset_password_instructions(record, token, opts={})
|
12
|
+
def reset_password_instructions(record, token, opts = {})
|
13
13
|
@token = token
|
14
14
|
devise_mail(record, :reset_password_instructions, opts)
|
15
15
|
end
|
16
16
|
|
17
|
-
def unlock_instructions(record, token, opts={})
|
17
|
+
def unlock_instructions(record, token, opts = {})
|
18
18
|
@token = token
|
19
19
|
devise_mail(record, :unlock_instructions, opts)
|
20
20
|
end
|
21
21
|
|
22
|
-
def email_changed(record, opts={})
|
22
|
+
def email_changed(record, opts = {})
|
23
23
|
devise_mail(record, :email_changed, opts)
|
24
24
|
end
|
25
25
|
|
26
|
-
def password_change(record, opts={})
|
26
|
+
def password_change(record, opts = {})
|
27
27
|
devise_mail(record, :password_change, opts)
|
28
28
|
end
|
29
29
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<h2>Resend confirmation instructions</h2>
|
2
2
|
|
3
3
|
<%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %>
|
4
|
-
<%=
|
4
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
5
5
|
|
6
6
|
<div class="field">
|
7
7
|
<%= f.label :email %><br />
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<h2>Change your password</h2>
|
2
2
|
|
3
3
|
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
|
4
|
-
<%=
|
4
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
5
5
|
<%= f.hidden_field :reset_password_token %>
|
6
6
|
|
7
7
|
<div class="field">
|
@@ -9,12 +9,12 @@
|
|
9
9
|
<% if @minimum_password_length %>
|
10
10
|
<em>(<%= @minimum_password_length %> characters minimum)</em><br />
|
11
11
|
<% end %>
|
12
|
-
<%= f.password_field :password, autofocus: true, autocomplete: "
|
12
|
+
<%= f.password_field :password, autofocus: true, autocomplete: "new-password" %>
|
13
13
|
</div>
|
14
14
|
|
15
15
|
<div class="field">
|
16
16
|
<%= f.label :password_confirmation, "Confirm new password" %><br />
|
17
|
-
<%= f.password_field :password_confirmation, autocomplete: "
|
17
|
+
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
|
18
18
|
</div>
|
19
19
|
|
20
20
|
<div class="actions">
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<h2>Forgot your password?</h2>
|
2
2
|
|
3
3
|
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
|
4
|
-
<%=
|
4
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
5
5
|
|
6
6
|
<div class="field">
|
7
7
|
<%= f.label :email %><br />
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<h2>Edit <%= resource_name.to_s.humanize %></h2>
|
2
2
|
|
3
3
|
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
|
4
|
-
<%=
|
4
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
5
5
|
|
6
6
|
<div class="field">
|
7
7
|
<%= f.label :email %><br />
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
<div class="field">
|
16
16
|
<%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
|
17
|
-
<%= f.password_field :password, autocomplete: "
|
17
|
+
<%= f.password_field :password, autocomplete: "new-password" %>
|
18
18
|
<% if @minimum_password_length %>
|
19
19
|
<br />
|
20
20
|
<em><%= @minimum_password_length %> characters minimum</em>
|
@@ -23,12 +23,12 @@
|
|
23
23
|
|
24
24
|
<div class="field">
|
25
25
|
<%= f.label :password_confirmation %><br />
|
26
|
-
<%= f.password_field :password_confirmation, autocomplete: "
|
26
|
+
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
|
27
27
|
</div>
|
28
28
|
|
29
29
|
<div class="field">
|
30
30
|
<%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
|
31
|
-
<%= f.password_field :current_password, autocomplete: "
|
31
|
+
<%= f.password_field :current_password, autocomplete: "current-password" %>
|
32
32
|
</div>
|
33
33
|
|
34
34
|
<div class="actions">
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<h2>Sign up</h2>
|
2
2
|
|
3
3
|
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
|
4
|
-
<%=
|
4
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
5
5
|
|
6
6
|
<div class="field">
|
7
7
|
<%= f.label :email %><br />
|
@@ -13,12 +13,12 @@
|
|
13
13
|
<% if @minimum_password_length %>
|
14
14
|
<em>(<%= @minimum_password_length %> characters minimum)</em>
|
15
15
|
<% end %><br />
|
16
|
-
<%= f.password_field :password, autocomplete: "
|
16
|
+
<%= f.password_field :password, autocomplete: "new-password" %>
|
17
17
|
</div>
|
18
18
|
|
19
19
|
<div class="field">
|
20
20
|
<%= f.label :password_confirmation %><br />
|
21
|
-
<%= f.password_field :password_confirmation, autocomplete: "
|
21
|
+
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
|
22
22
|
</div>
|
23
23
|
|
24
24
|
<div class="actions">
|
@@ -8,15 +8,15 @@
|
|
8
8
|
|
9
9
|
<div class="field">
|
10
10
|
<%= f.label :password %><br />
|
11
|
-
<%= f.password_field :password, autocomplete: "
|
11
|
+
<%= f.password_field :password, autocomplete: "current-password" %>
|
12
12
|
</div>
|
13
13
|
|
14
|
-
<% if devise_mapping.rememberable?
|
14
|
+
<% if devise_mapping.rememberable? %>
|
15
15
|
<div class="field">
|
16
16
|
<%= f.check_box :remember_me %>
|
17
17
|
<%= f.label :remember_me %>
|
18
18
|
</div>
|
19
|
-
<% end
|
19
|
+
<% end %>
|
20
20
|
|
21
21
|
<div class="actions">
|
22
22
|
<%= f.submit "Log in" %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<% if resource.errors.any? %>
|
2
|
+
<div id="error_explanation">
|
3
|
+
<h2>
|
4
|
+
<%= I18n.t("errors.messages.not_saved",
|
5
|
+
count: resource.errors.count,
|
6
|
+
resource: resource.class.model_name.human.downcase)
|
7
|
+
%>
|
8
|
+
</h2>
|
9
|
+
<ul>
|
10
|
+
<% resource.errors.full_messages.each do |message| %>
|
11
|
+
<li><%= message %></li>
|
12
|
+
<% end %>
|
13
|
+
</ul>
|
14
|
+
</div>
|
15
|
+
<% end %>
|
@@ -1,25 +1,25 @@
|
|
1
1
|
<%- if controller_name != 'sessions' %>
|
2
2
|
<%= link_to "Log in", new_session_path(resource_name) %><br />
|
3
|
-
<% end
|
3
|
+
<% end %>
|
4
4
|
|
5
5
|
<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
|
6
6
|
<%= link_to "Sign up", new_registration_path(resource_name) %><br />
|
7
|
-
<% end
|
7
|
+
<% end %>
|
8
8
|
|
9
9
|
<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
|
10
10
|
<%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
|
11
|
-
<% end
|
11
|
+
<% end %>
|
12
12
|
|
13
13
|
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
|
14
14
|
<%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
|
15
|
-
<% end
|
15
|
+
<% end %>
|
16
16
|
|
17
17
|
<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
|
18
18
|
<%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
|
19
|
-
<% end
|
19
|
+
<% end %>
|
20
20
|
|
21
21
|
<%- if devise_mapping.omniauthable? %>
|
22
22
|
<%- resource_class.omniauth_providers.each do |provider| %>
|
23
23
|
<%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
|
24
|
-
<% end
|
25
|
-
<% end
|
24
|
+
<% end %>
|
25
|
+
<% end %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<h2>Resend unlock instructions</h2>
|
2
2
|
|
3
3
|
<%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %>
|
4
|
-
<%=
|
4
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
5
5
|
|
6
6
|
<div class="field">
|
7
7
|
<%= f.label :email %><br />
|
data/config/locales/en.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Additional translations at https://github.com/
|
1
|
+
# Additional translations at https://github.com/heartcombo/devise/wiki/I18n
|
2
2
|
|
3
3
|
en:
|
4
4
|
devise:
|
@@ -42,8 +42,9 @@ en:
|
|
42
42
|
signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
|
43
43
|
signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
|
44
44
|
signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
|
45
|
-
update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the
|
45
|
+
update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirmation link to confirm your new email address."
|
46
46
|
updated: "Your account has been updated successfully."
|
47
|
+
updated_but_not_signed_in: "Your account has been updated successfully, but since your password was changed, you need to sign in again"
|
47
48
|
sessions:
|
48
49
|
signed_in: "Signed in successfully."
|
49
50
|
signed_out: "Signed out successfully."
|
data/lib/devise.rb
CHANGED
@@ -71,7 +71,7 @@ module Devise
|
|
71
71
|
|
72
72
|
# The number of times to hash the password.
|
73
73
|
mattr_accessor :stretches
|
74
|
-
@@stretches =
|
74
|
+
@@stretches = 12
|
75
75
|
|
76
76
|
# The default key used when authenticating over http auth.
|
77
77
|
mattr_accessor :http_authentication_key
|
@@ -293,9 +293,9 @@ module Devise
|
|
293
293
|
mattr_accessor :token_generator
|
294
294
|
@@token_generator = nil
|
295
295
|
|
296
|
-
|
297
|
-
|
298
|
-
|
296
|
+
# When set to false, changing a password does not automatically sign in a user
|
297
|
+
mattr_accessor :sign_in_after_change_password
|
298
|
+
@@sign_in_after_change_password = true
|
299
299
|
|
300
300
|
def self.activerecord51? # :nodoc:
|
301
301
|
defined?(ActiveRecord) && ActiveRecord.gem_version >= Gem::Version.new("5.1.x")
|
@@ -36,14 +36,14 @@ module Devise
|
|
36
36
|
# before_action ->{ authenticate_blogger! :admin } # Redirects to the admin login page
|
37
37
|
# current_blogger :user # Preferably returns a User if one is signed in
|
38
38
|
#
|
39
|
-
def devise_group(group_name, opts={})
|
39
|
+
def devise_group(group_name, opts = {})
|
40
40
|
mappings = "[#{ opts[:contains].map { |m| ":#{m}" }.join(',') }]"
|
41
41
|
|
42
42
|
class_eval <<-METHODS, __FILE__, __LINE__ + 1
|
43
|
-
def authenticate_#{group_name}!(
|
43
|
+
def authenticate_#{group_name}!(favorite = nil, opts = {})
|
44
44
|
unless #{group_name}_signed_in?
|
45
45
|
mappings = #{mappings}
|
46
|
-
mappings.unshift mappings.delete(
|
46
|
+
mappings.unshift mappings.delete(favorite.to_sym) if favorite
|
47
47
|
mappings.each do |mapping|
|
48
48
|
opts[:scope] = mapping
|
49
49
|
warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
|
@@ -57,9 +57,9 @@ module Devise
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
def current_#{group_name}(
|
60
|
+
def current_#{group_name}(favorite = nil)
|
61
61
|
mappings = #{mappings}
|
62
|
-
mappings.unshift mappings.delete(
|
62
|
+
mappings.unshift mappings.delete(favorite.to_sym) if favorite
|
63
63
|
mappings.each do |mapping|
|
64
64
|
current = warden.authenticate(scope: mapping)
|
65
65
|
return current if current
|
@@ -113,7 +113,7 @@ module Devise
|
|
113
113
|
mapping = mapping.name
|
114
114
|
|
115
115
|
class_eval <<-METHODS, __FILE__, __LINE__ + 1
|
116
|
-
def authenticate_#{mapping}!(opts={})
|
116
|
+
def authenticate_#{mapping}!(opts = {})
|
117
117
|
opts[:scope] = :#{mapping}
|
118
118
|
warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
|
119
119
|
end
|
@@ -252,7 +252,7 @@ module Devise
|
|
252
252
|
# Overwrite Rails' handle unverified request to sign out all scopes,
|
253
253
|
# clear run strategies and remove cached variables.
|
254
254
|
def handle_unverified_request
|
255
|
-
super # call the default
|
255
|
+
super # call the default behavior which resets/nullifies/raises
|
256
256
|
request.env["devise.skip_storage"] = true
|
257
257
|
sign_out_all_scopes(false)
|
258
258
|
end
|
@@ -268,7 +268,7 @@ module Devise
|
|
268
268
|
# Check if flash messages should be emitted. Default is to do it on
|
269
269
|
# navigational formats
|
270
270
|
def is_flashing_format?
|
271
|
-
is_navigational_format?
|
271
|
+
request.respond_to?(:flash) && is_navigational_format?
|
272
272
|
end
|
273
273
|
|
274
274
|
private
|