devise 3.2.2 → 4.6.0

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

Potentially problematic release.


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

Files changed (235) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +242 -978
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +371 -100
  5. data/app/controllers/devise/confirmations_controller.rb +11 -5
  6. data/app/controllers/devise/omniauth_callbacks_controller.rb +12 -6
  7. data/app/controllers/devise/passwords_controller.rb +21 -8
  8. data/app/controllers/devise/registrations_controller.rb +59 -26
  9. data/app/controllers/devise/sessions_controller.rb +47 -17
  10. data/app/controllers/devise/unlocks_controller.rb +9 -4
  11. data/app/controllers/devise_controller.rb +67 -31
  12. data/app/helpers/devise_helper.rb +12 -19
  13. data/app/mailers/devise/mailer.rb +10 -0
  14. data/app/views/devise/confirmations/new.html.erb +9 -5
  15. data/app/views/devise/mailer/confirmation_instructions.html.erb +1 -1
  16. data/app/views/devise/mailer/email_changed.html.erb +7 -0
  17. data/app/views/devise/mailer/password_change.html.erb +3 -0
  18. data/app/views/devise/mailer/reset_password_instructions.html.erb +1 -1
  19. data/app/views/devise/mailer/unlock_instructions.html.erb +1 -1
  20. data/app/views/devise/passwords/edit.html.erb +16 -7
  21. data/app/views/devise/passwords/new.html.erb +9 -5
  22. data/app/views/devise/registrations/edit.html.erb +29 -15
  23. data/app/views/devise/registrations/new.html.erb +20 -9
  24. data/app/views/devise/sessions/new.html.erb +19 -10
  25. data/app/views/devise/shared/_error_messages.html.erb +15 -0
  26. data/app/views/devise/shared/{_links.erb → _links.html.erb} +9 -9
  27. data/app/views/devise/unlocks/new.html.erb +9 -5
  28. data/config/locales/en.yml +23 -17
  29. data/lib/devise/controllers/helpers.rb +112 -32
  30. data/lib/devise/controllers/rememberable.rb +15 -6
  31. data/lib/devise/controllers/scoped_views.rb +3 -1
  32. data/lib/devise/controllers/sign_in_out.rb +42 -26
  33. data/lib/devise/controllers/store_location.rb +31 -5
  34. data/lib/devise/controllers/url_helpers.rb +9 -7
  35. data/lib/devise/delegator.rb +2 -0
  36. data/lib/devise/encryptor.rb +24 -0
  37. data/lib/devise/failure_app.rb +125 -39
  38. data/lib/devise/hooks/activatable.rb +7 -6
  39. data/lib/devise/hooks/csrf_cleaner.rb +5 -1
  40. data/lib/devise/hooks/forgetable.rb +2 -0
  41. data/lib/devise/hooks/lockable.rb +7 -2
  42. data/lib/devise/hooks/proxy.rb +4 -2
  43. data/lib/devise/hooks/rememberable.rb +4 -2
  44. data/lib/devise/hooks/timeoutable.rb +16 -9
  45. data/lib/devise/hooks/trackable.rb +3 -1
  46. data/lib/devise/mailers/helpers.rb +15 -12
  47. data/lib/devise/mapping.rb +8 -2
  48. data/lib/devise/models/authenticatable.rb +82 -56
  49. data/lib/devise/models/confirmable.rb +125 -42
  50. data/lib/devise/models/database_authenticatable.rb +110 -32
  51. data/lib/devise/models/lockable.rb +30 -17
  52. data/lib/devise/models/omniauthable.rb +3 -1
  53. data/lib/devise/models/recoverable.rb +62 -26
  54. data/lib/devise/models/registerable.rb +4 -0
  55. data/lib/devise/models/rememberable.rb +62 -33
  56. data/lib/devise/models/timeoutable.rb +4 -8
  57. data/lib/devise/models/trackable.rb +20 -4
  58. data/lib/devise/models/validatable.rb +16 -9
  59. data/lib/devise/models.rb +3 -1
  60. data/lib/devise/modules.rb +12 -10
  61. data/lib/devise/omniauth/config.rb +2 -0
  62. data/lib/devise/omniauth/url_helpers.rb +14 -5
  63. data/lib/devise/omniauth.rb +2 -0
  64. data/lib/devise/orm/active_record.rb +5 -1
  65. data/lib/devise/orm/mongoid.rb +6 -2
  66. data/lib/devise/parameter_filter.rb +4 -0
  67. data/lib/devise/parameter_sanitizer.rb +139 -65
  68. data/lib/devise/rails/routes.rb +147 -116
  69. data/lib/devise/rails/warden_compat.rb +3 -10
  70. data/lib/devise/rails.rb +10 -13
  71. data/lib/devise/secret_key_finder.rb +27 -0
  72. data/lib/devise/strategies/authenticatable.rb +20 -9
  73. data/lib/devise/strategies/base.rb +3 -1
  74. data/lib/devise/strategies/database_authenticatable.rb +14 -6
  75. data/lib/devise/strategies/rememberable.rb +15 -3
  76. data/lib/devise/test/controller_helpers.rb +165 -0
  77. data/lib/devise/test/integration_helpers.rb +63 -0
  78. data/lib/devise/test_helpers.rb +7 -124
  79. data/lib/devise/time_inflector.rb +4 -2
  80. data/lib/devise/token_generator.rb +3 -41
  81. data/lib/devise/version.rb +3 -1
  82. data/lib/devise.rb +111 -84
  83. data/lib/generators/active_record/devise_generator.rb +49 -12
  84. data/lib/generators/active_record/templates/migration.rb +9 -7
  85. data/lib/generators/active_record/templates/migration_existing.rb +9 -7
  86. data/lib/generators/devise/controllers_generator.rb +46 -0
  87. data/lib/generators/devise/devise_generator.rb +7 -5
  88. data/lib/generators/devise/install_generator.rb +21 -0
  89. data/lib/generators/devise/orm_helpers.rb +10 -21
  90. data/lib/generators/devise/views_generator.rb +49 -28
  91. data/lib/generators/mongoid/devise_generator.rb +21 -19
  92. data/lib/generators/templates/README +5 -12
  93. data/lib/generators/templates/controllers/README +14 -0
  94. data/lib/generators/templates/controllers/confirmations_controller.rb +30 -0
  95. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +30 -0
  96. data/lib/generators/templates/controllers/passwords_controller.rb +34 -0
  97. data/lib/generators/templates/controllers/registrations_controller.rb +62 -0
  98. data/lib/generators/templates/controllers/sessions_controller.rb +27 -0
  99. data/lib/generators/templates/controllers/unlocks_controller.rb +30 -0
  100. data/lib/generators/templates/devise.rb +81 -36
  101. data/lib/generators/templates/markerb/confirmation_instructions.markerb +1 -1
  102. data/lib/generators/templates/markerb/email_changed.markerb +7 -0
  103. data/lib/generators/templates/markerb/password_change.markerb +3 -0
  104. data/lib/generators/templates/markerb/reset_password_instructions.markerb +1 -1
  105. data/lib/generators/templates/markerb/unlock_instructions.markerb +1 -1
  106. data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +6 -2
  107. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +9 -4
  108. data/lib/generators/templates/simple_form_for/passwords/new.html.erb +5 -2
  109. data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +14 -6
  110. data/lib/generators/templates/simple_form_for/registrations/new.html.erb +12 -4
  111. data/lib/generators/templates/simple_form_for/sessions/new.html.erb +11 -6
  112. data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +5 -2
  113. metadata +52 -280
  114. data/.gitignore +0 -10
  115. data/.travis.yml +0 -20
  116. data/.yardopts +0 -9
  117. data/CONTRIBUTING.md +0 -14
  118. data/Gemfile +0 -31
  119. data/Gemfile.lock +0 -160
  120. data/Rakefile +0 -35
  121. data/devise.gemspec +0 -27
  122. data/devise.png +0 -0
  123. data/gemfiles/Gemfile.rails-3.2.x +0 -31
  124. data/gemfiles/Gemfile.rails-3.2.x.lock +0 -159
  125. data/test/controllers/custom_strategy_test.rb +0 -62
  126. data/test/controllers/helpers_test.rb +0 -276
  127. data/test/controllers/internal_helpers_test.rb +0 -120
  128. data/test/controllers/passwords_controller_test.rb +0 -31
  129. data/test/controllers/sessions_controller_test.rb +0 -99
  130. data/test/controllers/url_helpers_test.rb +0 -59
  131. data/test/delegator_test.rb +0 -19
  132. data/test/devise_test.rb +0 -94
  133. data/test/failure_app_test.rb +0 -232
  134. data/test/generators/active_record_generator_test.rb +0 -103
  135. data/test/generators/devise_generator_test.rb +0 -39
  136. data/test/generators/install_generator_test.rb +0 -13
  137. data/test/generators/mongoid_generator_test.rb +0 -23
  138. data/test/generators/views_generator_test.rb +0 -67
  139. data/test/helpers/devise_helper_test.rb +0 -51
  140. data/test/integration/authenticatable_test.rb +0 -713
  141. data/test/integration/confirmable_test.rb +0 -284
  142. data/test/integration/database_authenticatable_test.rb +0 -84
  143. data/test/integration/http_authenticatable_test.rb +0 -105
  144. data/test/integration/lockable_test.rb +0 -239
  145. data/test/integration/omniauthable_test.rb +0 -133
  146. data/test/integration/recoverable_test.rb +0 -334
  147. data/test/integration/registerable_test.rb +0 -349
  148. data/test/integration/rememberable_test.rb +0 -167
  149. data/test/integration/timeoutable_test.rb +0 -183
  150. data/test/integration/trackable_test.rb +0 -92
  151. data/test/mailers/confirmation_instructions_test.rb +0 -115
  152. data/test/mailers/reset_password_instructions_test.rb +0 -96
  153. data/test/mailers/unlock_instructions_test.rb +0 -91
  154. data/test/mapping_test.rb +0 -127
  155. data/test/models/authenticatable_test.rb +0 -13
  156. data/test/models/confirmable_test.rb +0 -454
  157. data/test/models/database_authenticatable_test.rb +0 -249
  158. data/test/models/lockable_test.rb +0 -298
  159. data/test/models/omniauthable_test.rb +0 -7
  160. data/test/models/recoverable_test.rb +0 -184
  161. data/test/models/registerable_test.rb +0 -7
  162. data/test/models/rememberable_test.rb +0 -183
  163. data/test/models/serializable_test.rb +0 -49
  164. data/test/models/timeoutable_test.rb +0 -51
  165. data/test/models/trackable_test.rb +0 -13
  166. data/test/models/validatable_test.rb +0 -127
  167. data/test/models_test.rb +0 -144
  168. data/test/omniauth/config_test.rb +0 -57
  169. data/test/omniauth/url_helpers_test.rb +0 -54
  170. data/test/orm/active_record.rb +0 -10
  171. data/test/orm/mongoid.rb +0 -13
  172. data/test/parameter_sanitizer_test.rb +0 -81
  173. data/test/rails_app/Rakefile +0 -6
  174. data/test/rails_app/app/active_record/admin.rb +0 -6
  175. data/test/rails_app/app/active_record/shim.rb +0 -2
  176. data/test/rails_app/app/active_record/user.rb +0 -6
  177. data/test/rails_app/app/controllers/admins/sessions_controller.rb +0 -6
  178. data/test/rails_app/app/controllers/admins_controller.rb +0 -11
  179. data/test/rails_app/app/controllers/application_controller.rb +0 -9
  180. data/test/rails_app/app/controllers/home_controller.rb +0 -25
  181. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +0 -2
  182. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +0 -2
  183. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +0 -14
  184. data/test/rails_app/app/controllers/users_controller.rb +0 -31
  185. data/test/rails_app/app/helpers/application_helper.rb +0 -3
  186. data/test/rails_app/app/mailers/users/mailer.rb +0 -12
  187. data/test/rails_app/app/mongoid/admin.rb +0 -29
  188. data/test/rails_app/app/mongoid/shim.rb +0 -23
  189. data/test/rails_app/app/mongoid/user.rb +0 -39
  190. data/test/rails_app/app/views/admins/index.html.erb +0 -1
  191. data/test/rails_app/app/views/admins/sessions/new.html.erb +0 -2
  192. data/test/rails_app/app/views/home/admin_dashboard.html.erb +0 -1
  193. data/test/rails_app/app/views/home/index.html.erb +0 -1
  194. data/test/rails_app/app/views/home/join.html.erb +0 -1
  195. data/test/rails_app/app/views/home/private.html.erb +0 -1
  196. data/test/rails_app/app/views/home/user_dashboard.html.erb +0 -1
  197. data/test/rails_app/app/views/layouts/application.html.erb +0 -24
  198. data/test/rails_app/app/views/users/edit_form.html.erb +0 -1
  199. data/test/rails_app/app/views/users/index.html.erb +0 -1
  200. data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +0 -1
  201. data/test/rails_app/app/views/users/sessions/new.html.erb +0 -1
  202. data/test/rails_app/bin/bundle +0 -3
  203. data/test/rails_app/bin/rails +0 -4
  204. data/test/rails_app/bin/rake +0 -4
  205. data/test/rails_app/config/application.rb +0 -40
  206. data/test/rails_app/config/boot.rb +0 -14
  207. data/test/rails_app/config/database.yml +0 -18
  208. data/test/rails_app/config/environment.rb +0 -5
  209. data/test/rails_app/config/environments/development.rb +0 -30
  210. data/test/rails_app/config/environments/production.rb +0 -80
  211. data/test/rails_app/config/environments/test.rb +0 -36
  212. data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  213. data/test/rails_app/config/initializers/devise.rb +0 -181
  214. data/test/rails_app/config/initializers/inflections.rb +0 -2
  215. data/test/rails_app/config/initializers/secret_token.rb +0 -8
  216. data/test/rails_app/config/initializers/session_store.rb +0 -1
  217. data/test/rails_app/config/routes.rb +0 -104
  218. data/test/rails_app/config.ru +0 -4
  219. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -71
  220. data/test/rails_app/db/schema.rb +0 -55
  221. data/test/rails_app/lib/shared_admin.rb +0 -17
  222. data/test/rails_app/lib/shared_user.rb +0 -29
  223. data/test/rails_app/public/404.html +0 -26
  224. data/test/rails_app/public/422.html +0 -26
  225. data/test/rails_app/public/500.html +0 -26
  226. data/test/rails_app/public/favicon.ico +0 -0
  227. data/test/routes_test.rb +0 -250
  228. data/test/support/assertions.rb +0 -40
  229. data/test/support/helpers.rb +0 -70
  230. data/test/support/integration.rb +0 -92
  231. data/test/support/locale/en.yml +0 -8
  232. data/test/support/webrat/integrations/rails.rb +0 -24
  233. data/test/test_helper.rb +0 -27
  234. data/test/test_helpers_test.rb +0 -173
  235. data/test/test_models.rb +0 -33
data/CHANGELOG.md CHANGED
@@ -1,1027 +1,291 @@
1
- ### 3.2.2
1
+ ### Unreleased
2
2
 
3
- * bug fix
4
- * Ensure timeoutable works when `sign_out_all_scopes` is false (by @louman)
5
- * Keep the query string when storing location (by @csexton)
6
- * Require rails generator base class in devise generators
7
-
8
- ### 3.2.1
9
-
10
- Security announcement: http://blog.plataformatec.com.br/2013/11/e-mail-enumeration-in-devise-in-paranoid-mode
11
-
12
- * enhancements
13
- * Add `store_location_for` helper and ensure it is safe (by @matthewrudy and @homakov)
14
- * Add `yield` around resource methods in Devise controllers (by @edelpero)
15
-
16
- * bug fix
17
- * Bring `password_digest` back to fix compatibility with `devise-encryptable`
18
- * Avoid e-mail enumeration on sign in when in paranoid mode
19
-
20
- ### 3.2.0
21
-
22
- * enhancements
23
- * Previously deprecated token authenticatable and insecure lookups have been removed
24
- * Add a class method so you can encrypt passwords from fixtures (by @tenderlove)
25
- * Send custom message when user enters invalid password and it has only one attempt
26
- to enter correct password before his account will be locked (by @Lightpower)
27
- * Prevent mutation of values assigned to case and whitespace santitized members (by @iamvery)
28
- * Separate redirects and flash messages in `navigational_formats` and `flashing_formats` (by @ssendev)
29
-
30
- * bug fix
31
- * A GET to sign_in page shouldn't extend the session (by @drewish)
32
- * Splat the arguments to `strong_parameters#permit` to work around a limitation in the `strong_parameters` gem (by @memberful)
33
- * Omniauth now uses `mapping.fullpath` when generating routes. This means if you call `devise_for :users` inside a scope, like `scope "/api"`, the scope will now apply to the omniauth route (by @AlexanderZaytsev)
34
- * Ensure timeoutable hook respects `Devise.sign_out_all_scopes` configuration
35
-
36
- * deprecations
37
- * `expire_session_data_after_sign_in!` has been deprecated in favor of `expire_data_after_sign_in!`
38
-
39
- ### 3.1.1
40
-
41
- * bug fix
42
- * Improve default message which asked users to sign in even when they were already signed (by @gregates)
43
- * Improve error message for when the config.secret_key is missing
44
-
45
- ### 3.1.0
46
-
47
- Security announcement: http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/
48
-
49
- * backwards incompatible changes
50
- * Do not store confirmation, unlock and reset password tokens directly in the database. This means tokens previously stored in the database are no longer valid. You can reenable this temporarily by setting `config.allow_insecure_token_lookup = true` in your configuration file. It is recommended to keep this configuration set to true just temporarily in your production servers only to aid migration
51
- * The Devise mailer and its views were changed to explicitly receive a token argument as `@token`. You will need to update your mailers and re-copy the views to your application with `rails g devise:views`
52
- * Sanitization of parameters should be done by calling `devise_parameter_sanitizer.sanitize(:action)` instead of `devise_parameter_sanitizer.for(:action)`
53
-
54
- * deprecations
55
- * Token authentication is deprecated
56
-
57
- * enhancements
58
- * Better security defaults
59
- * Allow easier customization of parameter sanitizer (by @alexpeattie)
60
-
61
- * bug fix
62
- * Do not confirm e-mail after password reset (by @moll)
63
- * Do not sign in after confirmation
64
- * Do not store confirmation, unlock and reset password tokens directly in the database
65
- * Do not compare directly against confirmation, unlock and reset password tokens
66
- * Skip storage for cookies on unverified requests
67
-
68
- ### 3.0.2
69
-
70
- * bug fix
71
- * Skip storage for cookies on unverified requests
72
-
73
- ### 3.0.1
74
-
75
- Security announcement: http://blog.plataformatec.com.br/2013/08/csrf-token-fixation-attacks-in-devise/
76
-
77
- * enhancements
78
- * Add after_confirmation callback
79
-
80
- * bug fix
81
- * When using rails 3.2, the generator adds 'attr_accessible' to the model (by @jcoyne)
82
- * Clean up CSRF token after authentication (by @homakov). Notice this change will clean up the CSRF Token after authentication (sign in, sign up, etc). So if you are using AJAX for such features, you will need to fetch a new CSRF token from the server.
83
-
84
- ### 3.0.0
85
-
86
- * enhancements
87
- * Rails 4 and Strong Parameters compatibility (by @carlosantoniodasilva, @josevalim, @latortuga, @lucasmazza, @nashby, @rafaelfranca, @spastorino)
88
- * Drop support for Rails < 3.2 and Ruby < 1.9.3
89
- * Enable to skip sending reconfirmation email when reconfirmable is on and `skip_confirmation_notification!` is invoked (by @tkhr)
90
-
91
- * bug fix
92
- * Errors on unlock are now properly reflected on the first `unlock_keys`
93
-
94
- * backwards incompatible changes
95
- * Changes on session storage will expire all existing sessions on upgrade. For those storing the session in the DB, they can be upgraded according to this gist: https://gist.github.com/moll/6417606
96
-
97
- ### 2.2.4
98
-
99
- * enhancements
100
- * Add `destroy_with_password` to `DatabaseAuthenticatable`. Allows destroying a record when `:current_password` matches, similarly to how `update_with_password` works. (by @michiel3)
101
- * Allow to override path after password resetting (by @worker8)
102
- * Add `#skip_confirmation_notification!` method to `Confirmable`. Allows skipping confirmation email without auto-confirming. (by @gregates)
103
- * allow_unconfirmed_access_for config from `:confirmable` module can be set to `nil` that means unconfirmed access for unlimited time. (by @nashby)
104
- * Support Rails' token strategy on authentication (by @robhurring)
105
- * Support explicitly setting the http authentication key via `config.http_authentication_key` (by @neo)
106
-
107
- * bug fix
108
- * Do not redirect when accessing devise API via JSON. (by @sebastianwr)
109
- * Generating scoped devise views now uses the correct scoped shared links partial instead of the default devise one (by @nashby)
110
- * Fix inheriting mailer templates from `Devise::Mailer`
111
- * Fix a bug when procs are used as default mailer in Devise (by @tomasv)
112
-
113
- ### 2.2.3
114
-
115
- Security announcement: http://blog.plataformatec.com.br/2013/01/security-announcement-devise-v2-2-3-v2-1-3-v2-0-5-and-v1-5-3-released/
116
-
117
- * bug fix
118
- * Require string conversion for all values
119
-
120
- ### 2.2.2
121
-
122
- * bug fix
123
- * Fix bug when checking for reconfirmable in templates
124
-
125
- ### 2.2.1
126
-
127
- * bug fix
128
- * Fix regression with case_insensitive_keys
129
- * Fix regression when password is blank when it is invalid
130
-
131
- ### 2.2.0
132
-
133
- * backwards incompatible changes
134
- * `headers_for` is deprecated, customize the mailer directly instead
135
- * All mailer methods now expect a second argument with delivery options
136
- * Default minimum password length is now 8 (by @carlosgaldino)
137
- * Support alternate sign in error message when email record does not exist (this adds a new I18n key to the locale file) (by @gabetax)
138
- * DeviseController responds only to HTML requests by default (call `DeviseController.respond_to` or `ApplicationController.respond_to` to add new formats)
139
- * Support Mongoid 3 onwards (by @durran)
140
-
141
- * enhancements
142
- * Fix unlockable which could leak account existence on paranoid mode (by @latortuga)
143
- * Confirmable now has a confirm_within option to set a period while the confirmation token is still valid (by @promisedlandt)
144
- * Flash messages in controller now respects `resource_name` (by @latortuga)
145
- * Separate `sign_in` and `sign_up` on RegistrationsController (by @rubynortheast)
146
- * Add autofocus to default views (by @Radagaisus)
147
- * Unlock user on password reset (by @marcinb)
148
- * Allow validation callbacks to apply to virtual attributes (by @latortuga)
149
-
150
- * bug fix
151
- * unconfirmed_email now uses the proper e-mail on salutation
152
- * Fix default email_regexp config to not allow spaces (by @kukula)
153
- * Fix a regression introduced on warden 1.2.1 (by @ejfinneran)
154
- * Properly camelize omniauth strategies (by @saizai)
155
- * Do not set flash messages for non navigational requests on session sign out (by @mathieul)
156
- * Set the proper fields as required on the lockable module (by @nickhoffman)
157
- * Respects Devise mailer default's reply_to (by @mrchrisadams)
158
- * Properly assign resource on `sign_in` related action (by @adammcnamara)
159
- * `update_with_password` doesn't change encrypted password when it is invalid (by @nashby)
160
- * Properly handle namespaced models on Active Record generator (by @nashby)
161
-
162
- ### 2.1.2
163
-
164
- * enhancements
165
- * Handle backwards incompatibility between Rails 3.2.6 and Thor 0.15.x
166
-
167
- * bug fix
168
- * Fix regression on strategy validation on previous release
169
-
170
- ### 2.1.1 (yanked)
171
-
172
- * enhancements
173
- * `sign_out_all_scopes` now locks warden and does not allow new logins in the same action
174
- * `Devise.omniauth_path_prefix` is available to configure omniauth path prefix
175
- * Redirect to sign in page when trying to access password#edit without a token (by @gbataille)
176
- * Allow a lambda in authenticate(d) routes helpers to further select the scope
177
- * Removed warnings on Rails 3.2.6 (by @nashby)
178
-
179
- * bug fix
180
- * `update_with_password` now relies on assign_attributes and forwards the :as option (by @wtn)
181
- * Do not trigger timeout on sign in related actions
182
- * Timeout does not explode when reset_authentication_token! is accidentally defined by Active Model (by @remomueller)
183
-
184
- * deprecations
185
- * Strategy#validate() no longer validates nil resources
186
-
187
- ### 2.1.0
188
-
189
- * enhancements
190
- * Add `check_fields!(model_class)` method on Devise::Models to check if the model includes the fields that Devise uses
191
- * Add `skip_reconfirmation!` to skip reconfirmation
192
- * Devise model generator now works with engines
193
- * Devise encryptable was moved to its new gem (http://github.com/plataformatec/devise-encryptable)
194
-
195
- * deprecations
196
- * Deprecations warnings added on Devise 2.0 are now removed with their features
197
- * All devise modules should now have a `required_fields(klass)` module method to help gathering missing attributes
198
- * `use_salt_as_remember_token` and `apply_schema` does not have any effect since 2.0 and are now deprecated
199
- * `valid_for_authentication?` must now return a boolean
200
-
201
- * bug fix
202
- * Ensure after sign in hook is not called without a resource
203
- * Fix a term: now on Omniauth related flash messages, we say that we're authenticating from an omniauth provider instead of authorizing
204
- * Fixed redirect when authenticated mounted apps (by @hakanensari)
205
- * Ensure the failure app still respects config.relative_url_root
206
- * `/users/sign_in` doesn't choke on protected attributes used to select sign in scope (by @Paymium)
207
- * `failed_attempts` is set to zero after any sign in (including via reset password) (by @rodrigoflores)
208
- * Added token expiration on timeout (by @antiarchitect)
209
- * Do not accidentally mark `_prefixes` as private
210
- * Better support for custom strategies on test helpers (by @mattconnolly)
211
- * Return `head :no_content` in SessionsController now that most JS libraries handle it (by @julianvargasalvarez)
212
- * Reverted moving devise/shared/_links.erb to devise/_links.erb
213
-
214
- ### 2.0.4
215
-
216
- Notes: https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0
217
-
218
- * bug fix
219
- * Fix when :host is used with devise_for (by @mreinsch)
220
- * Fix a regression that caused Warden to be initialized too late
221
-
222
- ### 2.0.3 (yanked)
223
-
224
- * bug fix
225
- * Ensure warning is not shown by mistake on apps with mounted engines
226
- * Fixes related to remember_token and rememberable_options
227
- * Ensure serializable_hash does not depend on accessible attributes
228
- * Ensure that timeout callback does not run on sign out action
229
-
230
- ### 2.0.2
231
-
232
- * enhancements
233
- * Add devise_i18n_options to customize I18n message
234
-
235
- * bug fix
236
- * Ensure Devise.available_router_name defaults to :main_app
237
- * Set autocomplete to off for password on edit forms
238
- * Better error messages in case a trackable model can't be saved
239
- * Show a warning in case someone gives a pluralized name to devise generator
240
- * Fix test behavior for rspec subject requests (by @sj26)
241
-
242
- ### 2.0.1
243
-
244
- * enhancements
245
- * Improved error messages on deprecation warnings
246
- * Hide Devise's internal generators from `rails g` command
247
-
248
- * bug fix
249
- * Removed tmp and log files from gem
250
-
251
- ### 2.0.0
252
-
253
- * enhancements
254
- * Add support for e-mail reconfirmation on change (by @Mandaryn and @heimidal)
255
- * Redirect users to sign in page after unlock (by @nashby)
256
- * Redirect to the previous URL on timeout
257
- * Inherit from the same Devise parent controller (by @sj26)
258
- * Allow parent_controller to be customizable via Devise.parent_controller, useful for engines
259
- * Allow router_name to be customizable via Devise.router_name, useful for engines
260
- * Allow alternate ORMs to run compatibility setup code before Authenticatable is included (by @jm81)
261
-
262
- * deprecation
263
- * Devise now only supports Rails 3.1 forward
264
- * Devise.confirm_within was deprecated in favor Devise.allow_unconfirmed_access_for
265
- * Devise.stateless_token= is deprecated in favor of appending :token_auth to Devise.skip_session_storage
266
- * Usage of Devise.apply_schema is deprecated
267
- * Usage of Devise migration helpers are deprecated
268
- * Usage of Devise.remember_across_browsers was deprecated
269
- * Usage of rememberable with remember_token was removed
270
- * Usage of recoverable without reset_password_sent_at was removed
271
- * Usage of Devise.case_insensitive_keys equals to false was removed
272
- * Move devise/shared/_links.erb to devise/_links.erb
273
- * Deprecated support of nested devise_for blocks
274
- * Deprecated support to devise.registrations.reasons and devise.registrations.inactive_signed_up in favor of devise.registrations.signed_up_but_*
275
- * Protected method render_with_scope was removed.
276
-
277
- ### 1.5.3
278
-
279
- * bug fix
280
- * Ensure delegator converts scope to symbol (by @dmitriy-kiriyenko)
281
- * Ensure passing :format => false to devise_for is not permanent
282
- * Ensure path checker does not check invalid routes
283
-
284
- ### 1.5.2
285
-
286
- * enhancements
287
- * Add support for Rails 3.1 new mass assignment conventions (by @kirs)
288
- * Add timeout_in method to Timeoutable, it can be overridden in a model (by @lest)
289
-
290
- * bug fix
291
- * OmniAuth error message now shows the proper option (:strategy_class instead of :klass)
292
-
293
- ### 1.5.1
294
-
295
- * bug fix
296
- * Devise should not attempt to load OmniAuth strategies. Strategies should be loaded before hand by the developer or explicitly given to Devise.
297
-
298
- ### 1.5.0
299
-
300
- * enhancements
301
- * Timeoutable also skips tracking if skip_trackable is given
302
- * devise_for now accepts :failure_app as an option
303
- * Models can select the proper mailer via devise_mailer method (by @locomotivecms)
304
- * Migration generator now uses the change method (by @nashby)
305
- * Support to markerb templates on the mailer generator (by @sbounmy)
306
- * Support for Omniauth 1.0 (older versions are no longer supported) (by @TamiasSibiricus)
307
-
308
- * bug fix
309
- * Allow idempotent API requests
310
- * Fix bug where logs did not show 401 as status code
311
- * Change paranoid settings to behave as success instead of as failure
312
- * Fix bug where activation messages were shown first than the credentials error message
313
- * Instance variables are expired after sign out
314
-
315
- * deprecation
316
- * redirect_location is deprecated, please use after_sign_in_path_for
317
- * after_sign_in_path_for now redirects to session[scope_return_to] if any value is stored in it
318
-
319
- ### 1.4.9
320
-
321
- * bug fix
322
- * url helpers were not being set under some circumstances
323
-
324
- ### 1.4.8
325
-
326
- * enhancements
327
- * Add docs for assets pipeline and Heroku
328
-
329
- * bug fix
330
- * confirmation_url was not being set under some circumstances
331
-
332
- ### 1.4.7
333
-
334
- * bug fix
335
- * Fix backward incompatible change from 1.4.6 for those using custom controllers
336
-
337
- ### 1.4.6 (yanked)
338
-
339
- * enhancements
340
- * Allow devise_for :skip => :all
341
- * Allow options to be passed to authenticate_user!
342
- * Allow --skip-routes to devise generator
343
- * Add allow_params_authentication! to make it explicit when params authentication is allowed in a controller
344
-
345
- ### 1.4.5
346
-
347
- * bug fix
348
- * Failure app tries the root path if a session one does not exist
349
- * No need to finalize Devise helpers all the time (by @bradleypriest)
350
- * Reset password shows proper message if user is not active
351
- * `clean_up_passwords` sets the accessors to nil to skip validations
352
-
353
- ### 1.4.4
354
-
355
- * bug fix
356
- * Do not always skip helpers, instead provide :skip_helpers as option to trigger it manually
357
-
358
- ### 1.4.3
359
-
360
- * enhancements
361
- * Improve Rails 3.1 compatibility
362
- * Use serialize_into_session and serialize_from_session in Warden serialize to improve extensibility
363
-
364
- * bug fix
365
- * Generator properly generates a change_table migration if a model already exists
366
- * Properly deprecate setup_mail
367
- * Fix encoding issues with email regexp
368
- * Only generate helpers for the used mappings
369
- * Wrap :action constraints in the proper hash
370
-
371
- * deprecations
372
- * Loosened the used email regexp to simply assert the existent of "@". If someone relies on a more strict regexp, they may use https://github.com/SixArm/sixarm_ruby_email_address_validation
373
-
374
- ### 1.4.2
375
-
376
- * bug fix
377
- * Provide a more robust behavior to serializers and add :force_except option
378
-
379
- ### 1.4.1
380
-
381
- * enhancements
382
- * Add :defaults and :format support on router
383
- * Add simple form generators
384
- * Better localization for devise_error_messages! (by @zedtux)
385
-
386
- * bug fix
387
- * Ensure to_xml is properly white listened
388
- * Ensure handle_unverified_request clean up any cached signed-in user
389
-
390
- ### 1.4.0
391
-
392
- * enhancements
393
- * Added authenticated and unauthenticated to the router to route the used based on his status (by @sj26)
394
- * Improve e-mail regexp (by @rodrigoflores)
395
- * Add strip_whitespace_keys and default to e-mail (by @swrobel)
396
- * Do not run format and uniqueness validations on e-mail if it hasn't changed (by @Thibaut)
397
- * Added update_without_password to update models but not allowing the password to change (by @fschwahn)
398
- * Added config.paranoid, check the generator for more information (by @rodrigoflores)
399
-
400
- * bug fix
401
- * password_required? should not affect length validation
402
- * User cannot access sign up and similar pages if he is already signed in through a cookie or token
403
- * Do not convert booleans to strings on finders (by @xavier)
404
- * Run validations even if current_password fails (by @crx)
405
- * Devise now honors routes constraints (by @macmartine)
406
- * Do not return the user resource when requesting instructions (by @rodrigoflores)
407
-
408
- ### 1.3.4
409
-
410
- * bug fix
411
- * Do not add formats if html or "*/*"
412
-
413
- ### 1.3.3
414
-
415
- * bug fix
416
- * Explicitly mark the token as expired if so
417
-
418
- ### 1.3.2
419
-
420
- * bug fix
421
- * Fix another regression related to reset_password_sent_at (by @alexdreher)
422
-
423
- ### 1.3.1
424
-
425
- * enhancements
426
- * Improve failure_app responses (by @indirect)
427
- * sessions/new and registrations/new also respond to xml and json now
428
-
429
- * bug fix
430
- * Fix a regression that occurred if reset_password_sent_at is not present (by @stevehodgkiss)
431
-
432
- ### 1.3.0
3
+ ### 4.6.0 - 2019-02-07
433
4
 
434
5
  * enhancements
435
- * All controllers can now handle different mime types than html using Responders (by @sikachu)
436
- * Added reset_password_within as configuration option to send the token for recovery (by @jdguyot)
437
- * Bump password length to 128 characters (by @k33l0r)
438
- * Add :only as option to devise_for (by @timoschilling)
439
- * Allow to override path after sending password instructions (by @irohiroki)
440
- * require_no_authentication has its own flash message (by @jackdempsey)
441
-
442
- * bug fix
443
- * Fix a bug where configuration options were being included too late
444
- * Ensure Devise::TestHelpers can be used to tests Devise internal controllers (by @jwilger)
445
- * valid_password? should not choke on empty passwords (by @mikel)
446
- * Calling devise more than once does not include previously added modules anymore
447
- * downcase_keys before validation
448
-
449
- * backward incompatible changes
450
- * authentication_keys are no longer considered when creating the e-mail validations, the previous behavior was buggy. You must double check if you were relying on such behavior.
451
-
452
- ### 1.2.1
453
-
454
- * enhancements
455
- * Improve update path messages
456
-
457
- ### 1.2.0
458
-
459
- * bug fix
460
- * Properly ignore path prefix on omniauthable
461
- * Faster uniqueness queries
462
- * Rename active? to active_for_authentication? to avoid conflicts
463
-
464
- ### 1.2.rc2
465
-
466
- * enhancements
467
- * Make friendly_token 20 chars long
468
- * Use secure_compare
469
-
470
- * bug fix
471
- * Fix an issue causing infinite redirects in production
472
- * rails g destroy works properly with devise generators (by @andmej)
473
- * before_failure callbacks should work on test helpers (by @twinge)
474
- * rememberable cookie now is httponly by default (by @JamesFerguson)
475
- * Add missing confirmation_keys (by @JohnPlummer)
476
- * Ensure after_* hooks are called on RegistrationsController
477
- * When using database_authenticatable Devise will now only create an email field when appropriate (if using default authentication_keys or custom authentication_keys with email included)
478
- * Ensure stateless token does not trigger timeout (by @pixelauthority)
479
- * Implement handle_unverified_request for Rails 3.0.4 compatibility and improve FailureApp reliance on symbols
480
- * Consider namespaces while generating routes
481
- * Custom failure apps no longer ignored in test mode (by @jaghion)
482
- * Do not depend on ActiveModel::Dirty
483
- * Manual sign_in now triggers remember token
484
- * Be sure to halt strategies on failures
485
- * Consider SCRIPT_NAME on Omniauth paths
486
- * Reset failed attempts when lock is expired
487
- * Ensure there is no Mongoid injection
488
-
489
- * deprecations
490
- * Deprecated anybody_signed_in? in favor of signed_in? (by @gavinhughes)
491
- * Removed --haml and --slim view templates
492
- * Devise::OmniAuth helpers were deprecated and removed in favor of Omniauth.config.test_mode
493
-
494
- ### 1.2.rc
495
-
496
- * deprecations
497
- * cookie_domain is deprecated in favor of cookie_options
498
- * after_update_path_for can no longer be defined in ApplicationController
499
-
500
- * enhancements
501
- * Added OmniAuth support
502
- * Added ORM adapter to abstract ORM iteraction
503
- * sign_out_via is available in the router to configure the method used for sign out (by @martinrehfeld)
504
- * Improved Ajax requests handling in failure app (by @spastorino)
505
- * Added request_keys to easily use request specific values (like subdomain) in authentication
506
- * Increased the size of friendly_token to 60 characters (reduces the chances of a successful brute attack)
507
- * Ensure the friendly token does not include "_" or "-" since some e-mails may not autolink it properly (by @rymai)
508
- * Extracted encryptors into :encryptable for better bcrypt support
509
- * :rememberable is now able to use salt as token if no remember_token is provided
510
- * Store the salt in session and expire the session if the user changes his password
511
- * Allow :stateless_token to be set to true avoiding users to be stored in session through token authentication
512
- * cookie_options uses session_options values by default
513
- * Sign up now check if the user is active or not and redirect him accordingly setting the inactive_signed_up message
514
- * Use ActiveModel#to_key instead of #id
515
- * sign_out_all_scopes now destroys the whole session
516
- * Added case_insensitive_keys that automatically downcases the given keys, by default downcases only e-mail (by @adahl)
517
-
518
- * default behavior changes
519
- * sign_out_all_scopes defaults to true as security measure
520
- * http authenticatable is disabled by default
521
- * Devise does not intercept 401 returned from applications
6
+ * Allow to skip email and password change notifications (by @iorme1)
7
+ * Include the use of `nil` for `allow_unconfirmed_access_for` in the docs (by @joaumg)
8
+ * Ignore useless files into the `.gem` file (by @huacnlee)
9
+ * Explain the code that prevents enumeration attacks inside `Devise::Strategies::DatabaseAuthenticatable` (by @tegon)
10
+ * Refactor the `devise_error_messages!` helper to render a partial (by @prograhamer)
11
+ * Add an option (`Devise.sign_in_after_change_password`) to not automatically sign in a user after changing a password (by @knjko)
522
12
 
523
- * bugfix
524
- * after_sign_in_path_for always receives a resource
525
- * Do not execute Warden::Callbacks on Devise::TestHelpers (by @sgronblo)
526
- * Allow password recovery and account unlocking to change used keys (by @RStankov)
527
- * FailureApp now properly handles nil request.format
528
- * Fix a bug causing FailureApp to return with HTTP Auth Headers for IE7
529
- * Ensure namespaces has proper scoped views
530
- * Ensure Devise does not set empty flash messages (by @sxross)
531
-
532
- ### 1.1.6
533
-
534
- * Use a more secure e-mail regexp
535
- * Implement Rails 3.0.4 handle unverified request
536
- * Use secure_compare to compare passwords
537
-
538
- ### 1.1.5
539
-
540
- * bugfix
541
- * Ensure to convert keys on indifferent hash
542
-
543
- * defaults
544
- * Set config.http_authenticatable to false to avoid confusion
545
-
546
- ### 1.1.4
547
-
548
- * bugfix
549
- * Avoid session fixation attacks
550
-
551
- ### 1.1.3
552
-
553
- * bugfix
554
- * Add reply-to to e-mail headers by default
555
- * Updated the views generator to respect the rails :template_engine option (by @fredwu)
556
- * Check the type of HTTP Authentication before using Basic headers
557
- * Avoid invalid_salt errors by checking salt presence (by @thibaudgg)
558
- * Forget user deletes the right cookie before logout, not remembering the user anymore (by @emtrane)
559
- * Fix for failed first-ever logins on PostgreSQL where column default is nil (by @bensie)
560
- * :default options is now honored in migrations
561
-
562
- ### 1.1.2
563
-
564
- * bugfix
565
- * Compatibility with latest Rails routes schema
566
-
567
- ### 1.1.1
568
-
569
- * bugfix
570
- * Fix a small bug where generated locale file was empty on devise:install
571
-
572
- ### 1.1.0
573
-
574
- * enhancements
575
- * Rememberable module allows user to be remembered across browsers and is enabled by default (by @trevorturk)
576
- * Rememberable module allows you to activate the period the remember me token is extended (by @trevorturk)
577
- * devise_for can now be used together with scope method in routes but with a few limitations (check the documentation)
578
- * Support `as` or `devise_scope` in the router to specify controller access scope
579
- * HTTP Basic Auth can now be disabled/enabled for xhr(ajax) requests using http_authenticatable_on_xhr option (by @pellja)
580
-
581
- * bug fix
582
- * Fix a bug in Devise::TestHelpers where current_user was returning a Response object for non active accounts
583
- * Devise should respect script_name and path_info contracts
584
- * Fix a bug when accessing a path with (.:format) (by @klacointe)
585
- * Do not add unlock routes unless unlock strategy is email or both
586
- * Email should be case insensitive
587
- * Store classes as string in session, to avoid serialization and stale data issues
588
-
589
- * deprecations
590
- * use_default_scope is deprecated and has no effect. Use :as or :devise_scope in the router instead
591
-
592
- ### 1.1.rc2
593
-
594
- * enhancements
595
- * Allow to set cookie domain for the remember token. (by @mantas)
596
- * Added navigational formats to specify when it should return a 302 and when a 401.
597
- * Added authenticate(scope) support in routes (by @wildchild)
598
- * Added after_update_path_for to registrations controller (by @thedelchop)
599
- * Allow the mailer object to be replaced through config.mailer = "MyOwnMailer"
600
-
601
- * bug fix
602
- * Fix a bug where session was timing out on sign out
603
-
604
- * deprecations
605
- * bcrypt is now the default encryptor
606
- * devise.mailer.confirmations_instructions now should be devise.mailer.confirmations_instructions.subject
607
- * devise.mailer.user.confirmations_instructions now should be devise.mailer.confirmations_instructions.user_subject
608
- * Generators now use Rails 3 syntax (devise:install) instead of devise_install
609
-
610
- ### 1.1.rc1
611
-
612
- * enhancements
613
- * Rails 3 compatibility
614
- * All controllers and views are namespaced, for example: Devise::SessionsController and "devise/sessions"
615
- * Devise.orm is deprecated. This reduces the required API to hook your ORM with devise
616
- * Use metal for failure app
617
- * HTML e-mails now have proper formatting
618
- * Allow to give :skip and :controllers in routes
619
- * Move trackable logic to the model
620
- * E-mails now use any template available in the filesystem. Easy to create multipart e-mails
621
- * E-mails asks headers_for in the model to set the proper headers
622
- * Allow to specify haml in devise_views
623
- * Compatibility with Mongoid
624
- * Make config.devise available on config/application.rb
625
- * TokenAuthenticatable now works with HTTP Basic Auth
626
- * Allow :unlock_strategy to be :none and add :lock_strategy which can be :failed_attempts or none. Setting those values to :none means that you want to handle lock and unlocking by yourself
627
- * No need to append ?unauthenticated=true in URLs anymore since Flash was moved to a middleware in Rails 3
628
- * :activatable is included by default in your models
629
-
630
- * bug fix
631
- * Fix a bug with STI
632
-
633
- * deprecations
634
- * Rails 3 compatible only
635
- * Removed support for MongoMapper
636
- * Scoped views are no longer "sessions/users/new". Now use "users/sessions/new"
637
- * Devise.orm is deprecated, just require "devise/orm/YOUR_ORM" instead
638
- * Devise.default_url_options is deprecated, just modify ApplicationController.default_url_options
639
- * All messages under devise.sessions, except :signed_in and :signed_out, should be moved to devise.failure
640
- * :as and :scope in routes is deprecated. Use :path and :singular instead
641
-
642
- ### 1.0.8
643
-
644
- * enhancements
645
- * Support for latest MongoMapper
646
- * Added anybody_signed_in? helper (by @SSDany)
647
-
648
- * bug fix
649
- * confirmation_required? is properly honored on active? calls. (by @paulrosania)
650
-
651
- ### 1.0.7
13
+ * bug fixes
14
+ * Fix missing comma in Simple Form generator (by @colinross)
15
+ * Fix error with migration generator in Rails 6 (by @oystersauce8)
16
+ * Set `encrypted_password` to `nil` when `password` is set to `nil` (by @sivagollapalli)
17
+ * Consider whether the request supports flash messages inside `Devise::Controllers::Helpers#is_flashing_format?` (by @colinross)
18
+ * Fix typo inside `Devise::Generators::ControllersGenerator` (by @kopylovvlad)
19
+ * Sanitize parameters inside `Devise::Models::Authenticatable#find_or_initialize_with_errors` (by @rlue)
20
+ * `#after_database_authentication` callback was not called after authentication on password reset (by @kanmaniselvan)
21
+ * Fix corner case when `#confirmation_period_valid?` was called at the same second as `confirmation_sent_at` was set. Mostly true for date types that only have second precisions. (by @stanhu)
22
+ * Fix unclosed `li` tag in `error_messages` partial (by @mracos)
23
+ * Fix Routes issue when devise engine is mounted in another engine on Rails versions lower than 5.1 (by @a-barbieri)
24
+ * Make `#increment_failed_attempts` concurrency safe (by @tegon)
25
+ * Apply Test Helper fix to Rails 6.0 as well as 5.x (by @matthewrudy)
652
26
 
653
- * bug fix
654
- * Ensure password confirmation is always required
655
27
 
656
28
  * deprecations
657
- * authenticatable was deprecated and renamed to database_authenticatable
658
- * confirmable is not included by default on generation
659
-
660
- ### 1.0.6
661
-
662
- * bug fix
663
- * Do not allow unlockable strategies based on time to access a controller.
664
- * Do not send unlockable email several times.
665
- * Allow controller to upstram custom! failures to Warden.
29
+ * The second argument of `DatabaseAuthenticatable`'s `#update_with_password` and `#update_without_password` is deprecated and will be removed in the next major version. It was added to support a feature deprecated in Rails 4, so you can safely remove it from your code. (by @ihatov08)
30
+ * The `DeviseHelper.devise_error_messages!` is deprecated and will be removed in the next major version. Use the `devise/shared/error_messages` partial instead. (by @mracos)
666
31
 
667
- ### 1.0.5
668
-
669
- * bug fix
670
- * Use prepend_before_filter in require_no_authentication.
671
- * require_no_authentication on unlockable.
672
- * Fix a bug when giving an association proxy to devise.
673
- * Do not use lock! on lockable since it's part of ActiveRecord API.
674
-
675
- ### 1.0.4
676
-
677
- * bug fix
678
- * Fixed a bug when deleting an account with rememberable
679
- * Fixed a bug with custom controllers
680
-
681
- ### 1.0.3
682
-
683
- * enhancements
684
- * HTML e-mails now have proper formatting
685
- * Do not remove MongoMapper options in find
686
-
687
- ### 1.0.2
688
-
689
- * enhancements
690
- * Allows you set mailer content type (by @glennr)
691
-
692
- * bug fix
693
- * Uses the same content type as request on http authenticatable 401 responses
694
-
695
- ### 1.0.1
696
-
697
- * enhancements
698
- * HttpAuthenticatable is not added by default automatically.
699
- * Avoid mass assignment error messages with current password.
700
-
701
- * bug fix
702
- * Fixed encryptors autoload
703
-
704
- ### 1.0.0
705
-
706
- * deprecation
707
- * :old_password in update_with_password is deprecated, use :current_password instead
708
-
709
- * enhancements
710
- * Added Registerable
711
- * Added Http Basic Authentication support
712
- * Allow scoped_views to be customized per controller/mailer class
713
- * Allow authenticatable to used in change_table statements
714
-
715
- ### 0.9.2
716
-
717
- * bug fix
718
- * Ensure inactive user cannot sign in
719
- * Ensure redirect to proper url after sign up
32
+ ### 4.5.0 - 2018-08-15
720
33
 
721
34
  * enhancements
722
- * Added gemspec to repo
723
- * Added token authenticatable (by @grimen)
724
-
725
- ### 0.9.1
726
-
727
- * bug fix
728
- * Allow bigger salt size (by @jgeiger)
729
- * Fix relative url root
730
-
731
- ### 0.9.0
732
-
733
- * deprecation
734
- * devise :all is deprecated
735
- * :success and :failure flash messages are now :notice and :alert
736
-
737
- * enhancements
738
- * Added devise lockable (by @mhfs)
739
- * Warden 0.9.0 compatibility
740
- * Mongomapper 0.6.10 compatibility
741
- * Added Devise.add_module as hooks for extensions (by @grimen)
742
- * Ruby 1.9.1 compatibility (by @grimen)
743
-
744
- * bug fix
745
- * Accept path prefix not starting with slash
746
- * url helpers should rely on find_scope!
747
-
748
- ### 0.8.2
749
-
750
- * enhancements
751
- * Allow Devise.mailer_sender to be a proc (by @grimen)
752
-
753
- * bug fix
754
- * Fix bug with passenger, update is required to anyone deploying on passenger (by @dvdpalm)
755
-
756
- ### 0.8.1
757
-
758
- * enhancements
759
- * Move salt to encryptors
760
- * Devise::Lockable
761
- * Moved view links into partial and I18n'ed them
762
-
763
- * bug fix
764
- * Bcrypt generator was not being loaded neither setting the proper salt
765
-
766
- ### 0.8.0
767
-
768
- * enhancements
769
- * Warden 0.8.0 compatibility
770
- * Add an easy for map.connect "sign_in", :controller => "sessions", :action => "new" to work
771
- * Added :bcrypt encryptor (by @capotej)
772
-
773
- * bug fix
774
- * sign_in_count is also increased when user signs in via password change, confirmation, etc..
775
- * More DataMapper compatibility (by @lancecarlson)
35
+ * Use `before_action` instead of `before_filter` (by @edenthecat)
36
+ * Allow people to extend devise failure app, through invoking `ActiveSupport.run_load_hooks` once `Devise::FailureApp` is loaded (by @wnm)
37
+ * Use `update` instead of `update_attributes` (by @koic)
38
+ * Split IP resolution from `update_tracked_fields` (by @mckramer)
39
+ * upgrade dependencies for rails and responders (by @lancecarlson)
40
+ * Add `autocomplete="new-password"` to new password fields (by @gssbzn)
41
+ * Add `autocomplete="current-password"` to current password fields (by @gssbzn)
42
+ * Remove redundant `self` from `database_authenticatable` module (by @abhishekkanojia)
43
+ * Update `simple_form` templates with changes from https://github.com/plataformatec/devise/commit/16b3d6d67c7e017d461ea17ed29ea9738dc77e83 and https://github.com/plataformatec/devise/commit/6260c29a867b9a656f1e1557abe347a523178fab (by @gssbzn)
44
+ * Remove `:trackable` from the default modules in the generators, to be more GDPR-friendly (by @fakenine)
776
45
 
777
- * deprecation
778
- * Removed DeviseMailer.sender
779
-
780
- ### 0.7.5
781
-
782
- * enhancements
783
- * Set a default value for mailer to avoid find_template issues
784
- * Add models configuration to MongoMapper::EmbeddedDocument as well
785
-
786
- ### 0.7.4
46
+ * bug fixes
47
+ * Use same string on failed login regardless of whether account exists when in paranoid mode (by @TonyMK9068)
48
+ * Fix error when params is not a hash inside `Devise::ParameterSanitizer` (by @b0nn1e)
49
+ * Look for `secret_key_base` inside `Rails.application` (by @gencer)
50
+ * Ensure `Devise::ParameterFilter` does not add missing keys when called with a hash that has a `default` / `default_proc`
51
+ configured (by @joshpencheon)
52
+ * Adds `is_navigational_format?` check to `after_sign_up_path_for` to keep consistency (by @iorme1)
787
53
 
788
- * enhancements
789
- * Extract Activatable from Confirmable
790
- * Decouple Serializers from Devise modules
54
+ ### 4.4.3 - 2018-03-17
791
55
 
792
- ### 0.7.3
56
+ * bug fixes
57
+ * Fix undefined method `rails5?` for Devise::Test:Module (by @tegon)
58
+ * Fix: secret key was being required to be set inside credentials on Rails 5.2 (by @tegon)
793
59
 
794
- * bug fix
795
- * Give scope to the proper model validation
60
+ ### 4.4.2 - 2018-03-15
796
61
 
797
62
  * enhancements
798
- * Mail views are scoped as well
799
- * Added update_with_password for authenticatable
800
- * Allow render_with_scope to accept :controller option
801
-
802
- ### 0.7.2
803
-
804
- * deprecation
805
- * Renamed reset_confirmation! to resend_confirmation!
806
- * Copying locale is part of the installation process
807
-
808
- * bug fix
809
- * Fixed render_with_scope to work with all controllers
810
- * Allow sign in with two different users in Devise::TestHelpers
63
+ * Support for :credentials on Rails v5.2.x. (by @gencer)
64
+ * Improve documentation about the test suite. (by @tegon)
65
+ * Test with Rails 5.2.rc1 on Travis. (by @jcoyne)
66
+ * Allow test with Rails 6. (by @Fudoshiki)
67
+ * Creating a new section for controller configuration on `devise.rb` template (by @Danilo-Araujo-Silva)
811
68
 
812
- ### 0.7.1
69
+ * bug fixes
70
+ * Preserve content_type for unauthenticated tests (by @gmcnaughton)
71
+ * Check if the resource is persisted in `update_tracked_fields!` instead of performing validations (by @tegon)
72
+ * Revert "Replace log_process_action to append_info_to_payload" (by @tegon)
813
73
 
814
- * enhancements
815
- * Small enhancements for other plugins compatibility (by @grimen)
74
+ ### 4.4.1 - 2018-01-23
816
75
 
817
- ### 0.7.0
76
+ * bug fixes
77
+ * Ensure Gemspec is loaded as utf-8. (by @segiddins)
78
+ * Fix `ActiveRecord` check on `Confirmable`. (by @tegon)
79
+ * Fix `signed_in?` docs without running auth hooks. by (@machty)
818
80
 
819
- * deprecations
820
- * :authenticatable is not included by default anymore
81
+ ### 4.4.0 - 2017-12-29
821
82
 
822
83
  * enhancements
823
- * Improve loading process
824
- * Extract SessionSerializer from Authenticatable
825
-
826
- ### 0.6.3
84
+ * Add `frozen_string_literal` pragma comment to all Ruby files. (by @pat)
85
+ * Use `set_flash_method!` instead of `set_flash_method` in `Devise::OmniauthCallbacksController#failure`. (by @saichander17)
86
+ * Clarify how `store_location_for` modifies URIs. (by @olivierlacan)
87
+ * Move `failed_attempts` increment into its own function. by (@mobilutz)
88
+ * Add `autocomplete="email"` to email fields. by (@MikeRogers0)
89
+ * Add the ability to change the default migrations path introduced in Rails 5.0.3. (by @alexhifer)
90
+ * Delete unnecessary condition for helper method. (by @davydovanton)
91
+ * Support `id: :uuid` option for migrations. (by @filip373)
827
92
 
828
- * bug fix
829
- * Added trackable to migrations
830
- * Allow inflections to work
831
-
832
- ### 0.6.2
833
-
834
- * enhancements
835
- * More DataMapper compatibility
836
- * Devise::Trackable - track sign in count, timestamps and ips
93
+ * bug fixes
94
+ * Fix syntax for MRI 2.5.0. (by @pat)
95
+ * Validations were being ignored on singup in the `Trackable#update_tracked_fields!` method. (by @AshleyFoster)
96
+ * Do not modify options for `#serializable_hash`. (by @guigs)
97
+ * Email confirmations were being sent on sign in/sign out for application using `mongoid` and `mongoid-paperclip` gems. This is because previously we were checking if a model is from Active Record by checking if the method `after_commit` was defined - since `mongoid` doesn' have one - but `mongoid-paperclip` gem does define one, which cause this issue. (by @fjg)
837
98
 
838
- ### 0.6.1
99
+ ### 4.3.0 - 2017-05-14
839
100
 
840
- * enhancements
841
- * Devise::Timeoutable - timeout sessions without activity
842
- * DataMapper now accepts conditions
101
+ * Enhancements
102
+ * Dependency support added for Rails 5.1.x.
843
103
 
844
- ### 0.6.0
104
+ ### 4.2.1 - 2017-03-15
845
105
 
106
+ * removals
107
+ * `Devise::Mailer#scope_name` and `Devise::Mailer#resource` are now protected
108
+ methods instead of public.
109
+ * bug fixes
110
+ * Attempt to reset password without the password field in the request now results in a `:blank` validation error.
111
+ Before this change, Devise would accept the reset password request and log the user in, without validating/changing
112
+ the password. (by @victor-am)
113
+ * Confirmation links now expire based on UTC time, working properly when using different timezones. (by @jjuliano)
114
+ * enhancements
115
+ * Notify the original email when it is changed with a new `Devise.send_email_changed_notification` setting.
116
+ When using `reconfirmable`, the notification will be sent right away instead of when the unconfirmed email is confirmed.
117
+ (original change by @ethirajsrinivasan)
118
+
119
+ ### 4.2.0 - 2016-07-01
120
+
121
+ * removals
122
+ * Remove the deprecated `Devise::ParameterSanitizer` API from Devise 3.
123
+ Please use the `#permit` and `#sanitize` methods over `#for`.
124
+ * Remove the deprecated OmniAuth URL helpers. Use the fully qualified helpers
125
+ (`user_facebook_omniauth_authorize_path`) over the scope based helpers
126
+ ( `user_omniauth_authorize_path(:facebook)`).
127
+ * Remove the `Devise.bcrypt` method, use `Devise::Encryptor.digest` instead.
128
+ * Remove the `Devise::Models::Confirmable#confirm!` method, use `confirm` instead.
129
+ * Remove the `Devise::Models::Recoverable#reset_password!` method, use `reset_password` instead.
130
+ * Remove the `Devise::Models::Recoverable#after_password_reset` method.
131
+ * bug fixes
132
+ * Fix an `ActionDispatch::IllegalStateError` when testing controllers with Rails 5 rc 2(by @hamadata).
133
+ * Use `ActiveSupport.on_load` hooks to include Devise on `ActiveRecord` and `Mongoid`,
134
+ avoiding autoloading these constants too soon (by @lucasmazza, @rafaelfranca).
135
+ * enhancements
136
+ * Display the minimum password length on `registrations/edit` view (by @Yanchek99).
137
+ * You can disable Devise's routes reloading on boot by through the `reload_routes = false` config.
138
+ This can reduce the time taken to boot the application but it might trigger
139
+ some errors if you application (mostly your controllers) requires that
140
+ Devise mappings be loaded during boot time (by @sidonath).
141
+ * Added `Devise::Test::IntegrationHelpers` to bypass the sign in process using
142
+ Warden test API (by @lucasmazza).
143
+ * Define `inspect` in `Devise::Models::Authenticatable` to help ensure password hashes
144
+ aren't included in exceptions or otherwise accidentally serialized (by @tkrajcar).
145
+ * Add missing support of `Rails.application.config.action_controller.relative_url_root` (by @kosdiamantis).
846
146
  * deprecations
847
- * :authenticatable is still included by default, but yields a deprecation warning
848
-
849
- * enhancements
850
- * Added DataMapper support
851
- * Remove store_location from authenticatable strategy and add it to failure app
852
- * Allow a strategy to be placed after authenticatable
853
- * Do not rely attribute? methods, since they are not added on Datamapper
854
-
855
- ### 0.5.6
147
+ * `Devise::TestHelpers` is deprecated in favor of `Devise::Test::ControllerHelpers`
148
+ (by @lucasmazza).
149
+ * The `sign_in` test helper has changed to use keyword arguments when passing
150
+ a scope. `sign_in :admin, users(:alice)` should be rewritten as
151
+ `sign_in users(:alice), scope: :admin` (by @lucasmazza).
152
+ * The option `bypass` of `Devise::Controllers::SignInOut#sign_in` method is
153
+ deprecated in favor of `Devise::Controllers::SignInOut#bypass_sign_in`
154
+ method (by @ulissesalmeida).
856
155
 
857
- * enhancements
858
- * Do not send nil to build (DataMapper compatibility)
859
- * Allow to have scoped views
860
-
861
- ### 0.5.5
156
+ ### 4.1.1 - 2016-05-15
862
157
 
863
- * enhancements
864
- * Allow overwriting find for authentication method
865
- * Remove Ruby 1.8.7 dependency
158
+ * bug fixes
159
+ * Fix overwriting the remember_token when a valid one already exists (by @ralinchimev).
866
160
 
867
- ### 0.5.4
161
+ ### 4.1.0
868
162
 
163
+ * bug fixes
164
+ * Fix race condition of sending the confirmation instructions e-mail using background jobs.
165
+ Using the previous `after_create` callback, the e-mail can be sent before
166
+ the record be committed on database, generating a `ActiveRecord::NotFound` error.
167
+ Now the confirmation e-mail will be only sent after the database commit,
168
+ using the `after_commit` callback.
169
+ It may break your test suite on Rails 4 if you are testing the sent e-mails
170
+ or enqueued jobs using transactional fixtures enabled or `DatabaseCleaner` with `transaction` strategy.
171
+ You can easily fix your test suite using the gem
172
+ [test_after_commit](https://github.com/grosser/test_after_commit). For example, put in your Gemfile:
173
+
174
+ ```ruby
175
+ gem 'test_after_commit', :group => :test
176
+ ```
177
+
178
+ On Rails 5 `after_commit` callbacks are triggered even using transactional
179
+ fixtures, then this fix will not break your test suite. If you are using `DatabaseCleaner` with the `deletion` or `truncation` strategies it may not break your tests. (by @allenwq)
180
+ * Fix strategy checking in `Lockable#unlock_strategy_enabled?` for `:none` and
181
+ `:undefined` strategies. (by @f3ndot)
182
+ * features
183
+ * Humanize authentication keys in failure flash message (by @byzg)
184
+ When you are configuring the translations of `devise.failure.invalid`, the
185
+ `authentication_keys` is translated now.
869
186
  * deprecations
870
- * Deprecate :singular in devise_for and use :scope instead
187
+ * Remove code supporting old session serialization format (by @fphilipe).
188
+ * Now the `email_regexp` default uses a more permissive regex:
189
+ `/\A[^@\s]+@[^@\s]+\z/` (by @kimgb)
190
+ * Now the `strip_whitespace_keys` default is `[:email]` (by @ulissesalmeida)
191
+ * Now the `reconfirmable` default is `true` (by @ulissesalmeida)
192
+ * Now the `skip_session_storage` default is `[:http_auth]` (by @ulissesalmeida)
193
+ * Now the `sign_out_via` default is `:delete` (by @ulissesalmeida)
194
+ * improvements
195
+ * Avoids extra computation of friendly token for confirmation token (by @sbc100)
871
196
 
872
- * enhancements
873
- * Create after_sign_in_path_for and after_sign_out_path_for hooks to be
874
- overwriten in ApplicationController
875
- * Create sign_in_and_redirect and sign_out_and_redirect helpers
876
- * Warden::Manager.default_scope is automatically configured to the first given scope
877
-
878
- ### 0.5.3
879
-
880
- * bug fix
881
- * MongoMapper now converts DateTime to Time
882
- * Ensure all controllers are unloadable
883
-
884
- * enhancements
885
- * Moved friendly_token to Devise
886
- * Added Devise.all, so you can freeze your app strategies
887
- * Added Devise.apply_schema, so you can turn it to false in Datamapper or MongoMapper
888
- in cases you don't want it be handlded automatically
197
+ ### 4.0.3 - 2016-05-15
889
198
 
890
- ### 0.5.2
199
+ * bug fixes
200
+ * Fix overwriting the remember_token when a valid one already exists (by @ralinchimev).
891
201
 
892
- * enhancements
893
- * Improved sign_in and sign_out helpers to accepts resources
894
- * Added stored_location_for as a helper
895
- * Added test helpers
896
-
897
- ### 0.5.1
898
-
899
- * enhancements
900
- * Added serializers based on Warden ones
901
- * Allow authentication keys to be set
202
+ ### 4.0.2 - 2016-05-02
902
203
 
903
- ### 0.5.0
904
-
905
- * bug fix
906
- * Fixed a bug where remember me module was not working properly
204
+ * bug fixes
205
+ * Fix strategy checking in `Lockable#unlock_strategy_enabled?` for `:none`
206
+ and `:undefined` strategies. (by @f3ndot)
907
207
 
908
- * enhancements
909
- * Moved encryption strategy into the Encryptors module to allow several algorithms (by @mhfs)
910
- * Implemented encryptors for Clearance, Authlogic and Restful-Authentication (by @mhfs)
911
- * Added support for MongoMapper (by @shingara)
208
+ ### 4.0.1 - 2016-04-25
912
209
 
913
- ### 0.4.3
210
+ * bug fixes
211
+ * Fix the e-mail confirmation instructions send when a user updates the email
212
+ address from nil. (by @lmduc)
213
+ * Remove unnecessary `attribute_will_change!` call. (by @cadejscroggins)
214
+ * Consistent `permit!` check. (by @ulissesalmeida)
914
215
 
915
- * bug fix
916
- * Authentication just fails if user cannot be serialized from session, without raising errors;
917
- * Default configuration values should not overwrite user values;
216
+ ### 4.0.0 - 2016-04-18
918
217
 
919
- ### 0.4.2
218
+ * bug fixes
219
+ * Fix the `extend_remember_period` configuration. When set to `false` it does
220
+ not update the cookie expiration anymore.(by @ulissesalmeida)
920
221
 
921
222
  * deprecations
922
- * Renamed mail_sender to mailer_sender
923
-
924
- * enhancements
925
- * skip_before_filter added in Devise controllers
926
- * Use home_or_root_path on require_no_authentication as well
927
- * Added devise_controller?, useful to select or reject filters in ApplicationController
928
- * Allow :path_prefix to be given to devise_for
929
- * Allow default_url_options to be configured through devise (:path_prefix => "/:locale" is now supported)
930
-
931
- ### 0.4.1
932
-
933
- * bug fix
934
- * Ensure options can be set even if models were not loaded
935
-
936
- ### 0.4.0
223
+ * Added a warning of default value change in Devise 4.1 for users that uses
224
+ the the default configuration of the following configurations: (by @ulissesalmeida)
225
+ * `strip_whitespace_keys` - The default will be `[:email]`.
226
+ * `skip_session_storage` - The default will be `[:http_auth]`.
227
+ * `sign_out_via` - The default will be `:delete`.
228
+ * `reconfirmable` - The default will be `true`.
229
+ * `email_regexp` - The default will be `/\A[^@\s]+@[^@\s]+\z/`.
230
+ * Removed deprecated argument of `Devise::Models::Rememberable#remember_me!` (by @ulissesalmeida)
231
+ * Removed deprecated private method Devise::Controllers::Helpers#expire_session_data_after_sign_in!
232
+ (by @bogdanvlviv)
233
+
234
+ ### 4.0.0.rc2 - 2016-03-09
235
+
236
+ * enhancements
237
+ * Introduced `DeviseController#set_flash_message!` for conditional flash
238
+ messages setting to reduce complexity.
239
+ * `rails g devise:install` will fail if the app does not have a ORM configured
240
+ (by @arjunsharma)
241
+ * Support to Rails 5 versioned migrations added.
937
242
 
938
243
  * deprecations
939
- * Notifier is deprecated, use DeviseMailer instead. Remember to rename
940
- app/views/notifier to app/views/devise_mailer and I18n key from
941
- devise.notifier to devise.mailer
942
- * :authenticable calls are deprecated, use :authenticatable instead
244
+ * omniauth routes are no longer defined with a wildcard `:provider` parameter,
245
+ and provider specific routes are defined instead, so route helpers like `user_omniauth_authorize_path(:github)` are deprecated in favor of `user_github_omniauth_authorize_path`.
246
+ You can still use `omniauth_authorize_path(:user, :github)` if you need to
247
+ call the helpers dynamically.
943
248
 
944
- * enhancements
945
- * Allow devise to be more agnostic and do not require ActiveRecord to be loaded
946
- * Allow Warden::Manager to be configured through Devise
947
- * Created a generator which creates an initializer
948
-
949
- ### 0.3.0
249
+ ### 4.0.0.rc1 - 2016-02-01
950
250
 
951
- * bug fix
952
- * Allow yml messages to be configured by not using engine locales
251
+ * Support added to Rails 5 (by @twalpole).
252
+ * Devise no longer supports Rails 3.2 and 4.0.
253
+ * Devise no longer supports Ruby 1.9 and 2.0.
953
254
 
954
255
  * deprecations
955
- * Renamed confirm_in to confirm_within
956
- * Do not send confirmation messages when user changes his e-mail
957
- * Renamed authenticable to authenticatable and added deprecation warnings
958
-
959
- ### 0.2.3
960
-
961
- * enhancements
962
- * Ensure fail! works inside strategies
963
- * Make unauthenticated message (when you haven't signed in) different from invalid message
964
-
965
- * bug fix
966
- * Do not redirect on invalid authenticate
967
- * Allow model configuration to be set to nil
968
-
969
- ### 0.2.2
970
-
971
- * bug fix
972
- * Fix a bug when using customized resources
973
-
974
- ### 0.2.1
975
-
976
- * refactor
977
- * Clean devise_views generator to use devise existing views
978
-
979
- * enhancements
980
- * Create instance variables (like @user) for each devise controller
981
- * Use Devise::Controller::Helpers only internally
982
-
983
- * bug fix
984
- * Fix a bug with Mongrel and Ruby 1.8.6
985
-
986
- ### 0.2.0
987
-
988
- * enhancements
989
- * Allow option :null => true in authenticable migration
990
- * Remove attr_accessible calls from devise modules
991
- * Customizable time frame for rememberable with :remember_for config
992
- * Customizable time frame for confirmable with :confirm_in config
993
- * Generators for creating a resource and copy views
994
-
995
- * optimize
996
- * Do not load hooks or strategies if they are not used
997
-
998
- * bug fixes
999
- * Fixed requiring devise strategies
1000
-
1001
- ### 0.1.1
1002
-
1003
- * bug fixes
1004
- * Fixed requiring devise mapping
1005
-
1006
- ### 0.1.0
1007
-
1008
- * Devise::Authenticable
1009
- * Devise::Confirmable
1010
- * Devise::Recoverable
1011
- * Devise::Validatable
1012
- * Devise::Migratable
1013
- * Devise::Rememberable
1014
-
1015
- * SessionsController
1016
- * PasswordsController
1017
- * ConfirmationsController
1018
-
1019
- * Create an example app
1020
- * devise :all, :except => :rememberable
1021
- * Use sign_in and sign_out in SessionsController
1022
-
1023
- * Mailer subjects namespaced by model
1024
- * Allow stretches and pepper per model
1025
-
1026
- * Store session[:return_to] in session
1027
- * Sign user in automatically after confirming or changing it's password
256
+ * The `devise_parameter_sanitize` API has changed:
257
+ The `for` method was deprecated in favor of `permit`:
258
+
259
+ ```ruby
260
+ def configure_permitted_parameters
261
+ devise_parameter_sanitizer.for(:sign_up) << :subscribe_newsletter
262
+ # Should become the following.
263
+ devise_parameter_sanitizer.permit(:sign_up, keys: [:subscribe_newsletter])
264
+ end
265
+ ```
266
+
267
+ The customization through instance methods on the sanitizer implementation
268
+ should be done through it's `initialize` method:
269
+
270
+ ```ruby
271
+ class User::ParameterSanitizer < Devise::ParameterSanitizer
272
+ def sign_up
273
+ default_params.permit(:username, :email)
274
+ end
275
+ end
276
+
277
+ # The `sign_up` method can be a `permit` call on the sanitizer `initialize`.
278
+
279
+ class User::ParameterSanitizer < Devise::ParameterSanitizer
280
+ def initialize(*)
281
+ super
282
+ permit(:sign_up, keys: [:username, :email])
283
+ end
284
+ end
285
+ ```
286
+
287
+ You can check more examples and explanations on the [README section](README.md#strong-parameters)
288
+ and on the [ParameterSanitizer docs](lib/devise/parameter_sanitizer.rb).
289
+
290
+ Please check [3-stable](https://github.com/plataformatec/devise/blob/3-stable/CHANGELOG.md)
291
+ for previous changes.