devise 4.6.0 → 4.9.4

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 (58) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +122 -3
  3. data/MIT-LICENSE +2 -1
  4. data/README.md +108 -61
  5. data/app/controllers/devise/confirmations_controller.rb +1 -0
  6. data/app/controllers/devise/passwords_controller.rb +2 -2
  7. data/app/controllers/devise/registrations_controller.rb +1 -1
  8. data/app/controllers/devise/sessions_controller.rb +2 -2
  9. data/app/controllers/devise/unlocks_controller.rb +1 -0
  10. data/app/controllers/devise_controller.rb +16 -2
  11. data/app/helpers/devise_helper.rb +19 -7
  12. data/app/mailers/devise/mailer.rb +5 -5
  13. data/app/views/devise/passwords/edit.html.erb +1 -1
  14. data/app/views/devise/registrations/edit.html.erb +1 -1
  15. data/app/views/devise/shared/_error_messages.html.erb +1 -1
  16. data/app/views/devise/shared/_links.html.erb +1 -1
  17. data/config/locales/en.yml +3 -3
  18. data/lib/devise/controllers/helpers.rb +9 -7
  19. data/lib/devise/controllers/responder.rb +35 -0
  20. data/lib/devise/controllers/sign_in_out.rb +7 -5
  21. data/lib/devise/controllers/url_helpers.rb +1 -1
  22. data/lib/devise/failure_app.rb +22 -16
  23. data/lib/devise/hooks/csrf_cleaner.rb +6 -1
  24. data/lib/devise/hooks/lockable.rb +2 -5
  25. data/lib/devise/hooks/timeoutable.rb +2 -2
  26. data/lib/devise/mapping.rb +1 -1
  27. data/lib/devise/models/authenticatable.rb +13 -9
  28. data/lib/devise/models/confirmable.rb +30 -39
  29. data/lib/devise/models/database_authenticatable.rb +18 -34
  30. data/lib/devise/models/lockable.rb +11 -3
  31. data/lib/devise/models/omniauthable.rb +2 -2
  32. data/lib/devise/models/recoverable.rb +8 -19
  33. data/lib/devise/models/rememberable.rb +2 -2
  34. data/lib/devise/models/timeoutable.rb +1 -1
  35. data/lib/devise/models/trackable.rb +1 -1
  36. data/lib/devise/models/validatable.rb +4 -9
  37. data/lib/devise/models.rb +1 -0
  38. data/lib/devise/omniauth.rb +2 -5
  39. data/lib/devise/orm.rb +71 -0
  40. data/lib/devise/rails/deprecated_constant_accessor.rb +39 -0
  41. data/lib/devise/rails/routes.rb +6 -6
  42. data/lib/devise/rails.rb +4 -0
  43. data/lib/devise/strategies/authenticatable.rb +1 -1
  44. data/lib/devise/test/controller_helpers.rb +4 -2
  45. data/lib/devise/test/integration_helpers.rb +1 -1
  46. data/lib/devise/test_helpers.rb +1 -1
  47. data/lib/devise/version.rb +1 -1
  48. data/lib/devise.rb +35 -12
  49. data/lib/generators/active_record/devise_generator.rb +17 -2
  50. data/lib/generators/devise/devise_generator.rb +1 -1
  51. data/lib/generators/devise/install_generator.rb +1 -5
  52. data/lib/generators/devise/views_generator.rb +1 -1
  53. data/lib/generators/templates/README +9 -1
  54. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +1 -1
  55. data/lib/generators/templates/devise.rb +25 -11
  56. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +4 -1
  57. data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +1 -1
  58. metadata +21 -16
@@ -86,9 +86,24 @@ RUBY
86
86
  Rails::VERSION::MAJOR >= 5
87
87
  end
88
88
 
89
+ def rails61_and_up?
90
+ Rails::VERSION::MAJOR > 6 || (Rails::VERSION::MAJOR == 6 && Rails::VERSION::MINOR >= 1)
91
+ end
92
+
89
93
  def postgresql?
90
- config = ActiveRecord::Base.configurations[Rails.env]
91
- config && config['adapter'] == 'postgresql'
94
+ ar_config && ar_config['adapter'] == 'postgresql'
95
+ end
96
+
97
+ def ar_config
98
+ if ActiveRecord::Base.configurations.respond_to?(:configs_for)
99
+ if rails61_and_up?
100
+ ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: "primary").configuration_hash
101
+ else
102
+ ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, spec_name: "primary").config
103
+ end
104
+ else
105
+ ActiveRecord::Base.configurations[Rails.env]
106
+ end
92
107
  end
93
108
 
94
109
  def migration_version
@@ -13,7 +13,7 @@ module Devise
13
13
  desc "Generates a model with the given NAME (if one does not exist) with devise " \
14
14
  "configuration plus a migration file and devise routes."
15
15
 
16
- hook_for :orm
16
+ hook_for :orm, required: true
17
17
 
18
18
  class_option :routes, desc: "Generate routes", type: :boolean, default: true
19
19
 
@@ -11,7 +11,7 @@ module Devise
11
11
  source_root File.expand_path("../../templates", __FILE__)
12
12
 
13
13
  desc "Creates a Devise initializer and copy locale files to your application."
14
- class_option :orm
14
+ class_option :orm, required: true
15
15
 
16
16
  def copy_initializer
17
17
  unless options[:orm]
@@ -37,10 +37,6 @@ module Devise
37
37
  def show_readme
38
38
  readme "README" if behavior == :invoke
39
39
  end
40
-
41
- def rails_4?
42
- Rails::VERSION::MAJOR == 4
43
- end
44
40
  end
45
41
  end
46
42
  end
@@ -42,7 +42,7 @@ module Devise
42
42
  def view_directory(name, _target_path = nil)
43
43
  directory name.to_s, _target_path || "#{target_path}/#{name}" do |content|
44
44
  if scope
45
- content.gsub "devise/shared/links", "#{plural_scope}/shared/links"
45
+ content.gsub("devise/shared", "#{plural_scope}/shared")
46
46
  else
47
47
  content
48
48
  end
@@ -1,6 +1,6 @@
1
1
  ===============================================================================
2
2
 
3
- Some setup you must do manually if you haven't yet:
3
+ Depending on your application's configuration some manual setup may be required:
4
4
 
5
5
  1. Ensure you have defined default url options in your environments files. Here
6
6
  is an example of default_url_options appropriate for a development environment
@@ -10,10 +10,14 @@ Some setup you must do manually if you haven't yet:
10
10
 
11
11
  In production, :host should be set to the actual host of your application.
12
12
 
13
+ * Required for all applications. *
14
+
13
15
  2. Ensure you have defined root_url to *something* in your config/routes.rb.
14
16
  For example:
15
17
 
16
18
  root to: "home#index"
19
+
20
+ * Not required for API-only Applications *
17
21
 
18
22
  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
19
23
  For example:
@@ -21,8 +25,12 @@ Some setup you must do manually if you haven't yet:
21
25
  <p class="notice"><%= notice %></p>
22
26
  <p class="alert"><%= alert %></p>
23
27
 
28
+ * Not required for API-only Applications *
29
+
24
30
  4. You can copy Devise views (for customization) to your app by running:
25
31
 
26
32
  rails g devise:views
33
+
34
+ * Not required *
27
35
 
28
36
  ===============================================================================
@@ -9,7 +9,7 @@ class <%= @scope_prefix %>OmniauthCallbacksController < Devise::OmniauthCallback
9
9
  # end
10
10
 
11
11
  # More info at:
12
- # https://github.com/plataformatec/devise#omniauth
12
+ # https://github.com/heartcombo/devise#omniauth
13
13
 
14
14
  # GET|POST /resource/auth/twitter
15
15
  # def passthru
@@ -1,5 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Assuming you have not yet modified this file, each configuration option below
4
+ # is set to its default value. Note that some are commented out while others
5
+ # are not: uncommented lines are intended to protect your configuration from
6
+ # breaking changes in upgrades (i.e., in the event that future versions of
7
+ # Devise change the default values for those options).
8
+ #
3
9
  # Use this hook to configure devise mailer, warden hooks and so forth.
4
10
  # Many of these configuration options can be set straight in your model.
5
11
  Devise.setup do |config|
@@ -68,7 +74,10 @@ Devise.setup do |config|
68
74
  # Tell if authentication through HTTP Auth is enabled. False by default.
69
75
  # It can be set to an array that will enable http authentication only for the
70
76
  # given strategies, for example, `config.http_authenticatable = [:database]` will
71
- # enable it only for database authentication. The supported strategies are:
77
+ # enable it only for database authentication.
78
+ # For API-only applications to support authentication "out-of-the-box", you will likely want to
79
+ # enable this with :database unless you are using a custom strategy.
80
+ # The supported strategies are:
72
81
  # :database = Support basic authentication with authentication key + password
73
82
  # config.http_authenticatable = false
74
83
 
@@ -103,15 +112,18 @@ Devise.setup do |config|
103
112
  # config.reload_routes = true
104
113
 
105
114
  # ==> Configuration for :database_authenticatable
106
- # For bcrypt, this is the cost for hashing the password and defaults to 11. If
115
+ # For bcrypt, this is the cost for hashing the password and defaults to 12. If
107
116
  # using other algorithms, it sets how many times you want the password to be hashed.
117
+ # The number of stretches used for generating the hashed password are stored
118
+ # with the hashed password. This allows you to change the stretches without
119
+ # invalidating existing passwords.
108
120
  #
109
121
  # Limiting the stretches to just one in testing will increase the performance of
110
122
  # your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use
111
123
  # a value less than 10 in other environments. Note that, for bcrypt (the default
112
124
  # algorithm), the cost increases exponentially with the number of stretches (e.g.
113
125
  # a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation).
114
- config.stretches = Rails.env.test? ? 1 : 11
126
+ config.stretches = Rails.env.test? ? 1 : 12
115
127
 
116
128
  # Set up a pepper to generate the hashed password.
117
129
  # config.pepper = '<%= SecureRandom.hex(64) %>'
@@ -244,14 +256,14 @@ Devise.setup do |config|
244
256
 
245
257
  # ==> Navigation configuration
246
258
  # Lists the formats that should be treated as navigational. Formats like
247
- # :html, should redirect to the sign in page when the user does not have
259
+ # :html should redirect to the sign in page when the user does not have
248
260
  # access, but formats like :xml or :json, should return 401.
249
261
  #
250
262
  # If you have any extra navigational formats, like :iphone or :mobile, you
251
263
  # should add them to the navigational formats lists.
252
264
  #
253
265
  # The "*/*" below is required to match Internet Explorer requests.
254
- # config.navigational_formats = ['*/*', :html]
266
+ # config.navigational_formats = ['*/*', :html, :turbo_stream]
255
267
 
256
268
  # The default HTTP method used to sign out a resource. Default is :delete.
257
269
  config.sign_out_via = :delete
@@ -284,12 +296,14 @@ Devise.setup do |config|
284
296
  # so you need to do it manually. For the users scope, it would be:
285
297
  # config.omniauth_path_prefix = '/my_engine/users/auth'
286
298
 
287
- # ==> Turbolinks configuration
288
- # If your app is using Turbolinks, Turbolinks::Controller needs to be included to make redirection work correctly:
289
- #
290
- # ActiveSupport.on_load(:devise_failure_app) do
291
- # include Turbolinks::Controller
292
- # end
299
+ # ==> Hotwire/Turbo configuration
300
+ # When using Devise with Hotwire/Turbo, the http status for error responses
301
+ # and some redirects must match the following. The default in Devise for existing
302
+ # apps is `200 OK` and `302 Found` respectively, but new apps are generated with
303
+ # these new defaults that match Hotwire/Turbo behavior.
304
+ # Note: These might become the new default in future versions of Devise.
305
+ config.responder.error_status = :unprocessable_entity
306
+ config.responder.redirect_status = :see_other
293
307
 
294
308
  # ==> Configuration for :registerable
295
309
 
@@ -13,7 +13,10 @@
13
13
  autofocus: true,
14
14
  hint: ("#{@minimum_password_length} characters minimum" if @minimum_password_length),
15
15
  input_html: { autocomplete: "new-password" } %>
16
- <%= f.input :password_confirmation, label: "Confirm your new password", required: true %>
16
+ <%= f.input :password_confirmation,
17
+ label: "Confirm your new password",
18
+ required: true,
19
+ input_html: { autocomplete: "new-password" } %>
17
20
  </div>
18
21
 
19
22
  <div class="form-actions">
@@ -30,6 +30,6 @@
30
30
 
31
31
  <h3>Cancel my account</h3>
32
32
 
33
- <p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?" }, method: :delete %></p>
33
+ <div>Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?", turbo_confirm: "Are you sure?" }, method: :delete %></div>
34
34
 
35
35
  <%= link_to "Back", :back %>
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.6.0
4
+ version: 4.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
8
8
  - Carlos Antônio
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-02-07 00:00:00.000000000 Z
12
+ date: 2024-04-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: warden
@@ -60,9 +60,6 @@ dependencies:
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: 4.1.0
63
- - - "<"
64
- - !ruby/object:Gem::Version
65
- version: '6.0'
66
63
  type: :runtime
67
64
  prerelease: false
68
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -70,9 +67,6 @@ dependencies:
70
67
  - - ">="
71
68
  - !ruby/object:Gem::Version
72
69
  version: 4.1.0
73
- - - "<"
74
- - !ruby/object:Gem::Version
75
- version: '6.0'
76
70
  - !ruby/object:Gem::Dependency
77
71
  name: responders
78
72
  requirement: !ruby/object:Gem::Requirement
@@ -88,7 +82,7 @@ dependencies:
88
82
  - !ruby/object:Gem::Version
89
83
  version: '0'
90
84
  description: Flexible authentication solution for Rails with Warden
91
- email: contact@plataformatec.com.br
85
+ email: heartcombo@googlegroups.com
92
86
  executables: []
93
87
  extensions: []
94
88
  extra_rdoc_files: []
@@ -123,6 +117,7 @@ files:
123
117
  - lib/devise.rb
124
118
  - lib/devise/controllers/helpers.rb
125
119
  - lib/devise/controllers/rememberable.rb
120
+ - lib/devise/controllers/responder.rb
126
121
  - lib/devise/controllers/scoped_views.rb
127
122
  - lib/devise/controllers/sign_in_out.rb
128
123
  - lib/devise/controllers/store_location.rb
@@ -156,11 +151,13 @@ files:
156
151
  - lib/devise/omniauth.rb
157
152
  - lib/devise/omniauth/config.rb
158
153
  - lib/devise/omniauth/url_helpers.rb
154
+ - lib/devise/orm.rb
159
155
  - lib/devise/orm/active_record.rb
160
156
  - lib/devise/orm/mongoid.rb
161
157
  - lib/devise/parameter_filter.rb
162
158
  - lib/devise/parameter_sanitizer.rb
163
159
  - lib/devise/rails.rb
160
+ - lib/devise/rails/deprecated_constant_accessor.rb
164
161
  - lib/devise/rails/routes.rb
165
162
  - lib/devise/rails/warden_compat.rb
166
163
  - lib/devise/secret_key_finder.rb
@@ -204,11 +201,20 @@ files:
204
201
  - lib/generators/templates/simple_form_for/registrations/new.html.erb
205
202
  - lib/generators/templates/simple_form_for/sessions/new.html.erb
206
203
  - lib/generators/templates/simple_form_for/unlocks/new.html.erb
207
- homepage: https://github.com/plataformatec/devise
204
+ homepage: https://github.com/heartcombo/devise
208
205
  licenses:
209
206
  - MIT
210
- metadata: {}
211
- post_install_message:
207
+ metadata:
208
+ homepage_uri: https://github.com/heartcombo/devise
209
+ documentation_uri: https://rubydoc.info/github/heartcombo/devise
210
+ changelog_uri: https://github.com/heartcombo/devise/blob/main/CHANGELOG.md
211
+ source_code_uri: https://github.com/heartcombo/devise
212
+ bug_tracker_uri: https://github.com/heartcombo/devise/issues
213
+ wiki_uri: https://github.com/heartcombo/devise/wiki
214
+ post_install_message: "\n[DEVISE] Please review the [changelog] and [upgrade guide]
215
+ for more info on Hotwire / Turbo integration.\n\n [changelog] https://github.com/heartcombo/devise/blob/main/CHANGELOG.md\n
216
+ \ [upgrade guide] https://github.com/heartcombo/devise/wiki/How-To:-Upgrade-to-Devise-4.9.0-%5BHotwire-Turbo-integration%5D\n
217
+ \ "
212
218
  rdoc_options: []
213
219
  require_paths:
214
220
  - lib
@@ -223,9 +229,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
229
  - !ruby/object:Gem::Version
224
230
  version: '0'
225
231
  requirements: []
226
- rubyforge_project:
227
- rubygems_version: 2.6.13
228
- signing_key:
232
+ rubygems_version: 3.5.3
233
+ signing_key:
229
234
  specification_version: 4
230
235
  summary: Flexible authentication solution for Rails with Warden
231
236
  test_files: []