File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -38,6 +38,11 @@ def valid_password?(password)
3838 is_valid
3939 end
4040
41+ def password = ( new_password )
42+ self . password_salt = nil if migrate_hash_from_devise_argon2_v1?
43+ super
44+ end
45+
4146 protected
4247
4348 def password_digest ( password )
Original file line number Diff line number Diff line change @@ -302,4 +302,38 @@ def work_factors(hash)
302302 )
303303 end
304304 end
305+
306+ describe 'password reset' do
307+ NEW_PASSWORD = 'new password'
308+
309+ shared_examples 'ways of resetting the password' do
310+ it 'can be done via password_reset' do
311+ user . reset_password ( NEW_PASSWORD , NEW_PASSWORD )
312+ expect ( user . valid_password? ( NEW_PASSWORD ) ) . to be true
313+ end
314+
315+ it 'can be done via password=' do
316+ user . password = NEW_PASSWORD
317+ expect ( user . valid_password? ( NEW_PASSWORD ) ) . to be true
318+ end
319+ end
320+
321+ context 'encrypted_password is hashed with the current version of devise-argon2' do
322+
323+ end
324+
325+ context 'encrypted_password is hashed with version 1 of devise-argon2' do
326+ let ( :user ) { OldUser . new ( password : CORRECT_PASSWORD ) }
327+
328+ before do
329+ Devise . argon2_options . merge! ( { migrate_from_devise_argon2_v1 : true } )
330+ user . password_salt = 'devise-argon2 v1 salt'
331+ user . encrypted_password = ::Argon2 ::Password . create (
332+ "#{ CORRECT_PASSWORD } #{ user . password_salt } #{ Devise . pepper } "
333+ )
334+ end
335+
336+ include_examples 'ways of resetting the password'
337+ end
338+ end
305339end
You can’t perform that action at this time.
0 commit comments