Module: JumpIn::PasswordReset
- Includes:
- Tokenator
- Defined in:
- lib/jump_in/password_reset.rb
Constant Summary
Constants included
from Tokenator
Tokenator::DELIMITER
Instance Method Summary
collapse
Methods included from Tokenator
#decode_and_split_token, #decode_time, #generate_token
Instance Method Details
#generate_unique_token_for(user:) ⇒ Object
21
22
23
24
25
26
|
# File 'lib/jump_in/password_reset.rb', line 21
def generate_unique_token_for(user:)
loop do
token = generate_token
break token if token_uniq?(user: user, token: token)
end
end
|
#password_reset_valid?(password_reset_token:) ⇒ Boolean
37
38
39
|
# File 'lib/jump_in/password_reset.rb', line 37
def password_reset_valid?(password_reset_token:)
decode_time(password_reset_token) > Time.now - JumpIn.conf.expiration_time
end
|
#set_password_reset_for(user:, token: nil) ⇒ Object
8
9
10
11
12
13
14
|
# File 'lib/jump_in/password_reset.rb', line 8
def set_password_reset_for(user:, token: nil)
if token_uniq_or_empty?(user: user, token: token)
set_token(user: user, token: token)
else
false
end
end
|
#set_token(user:, token: nil) ⇒ Object
16
17
18
19
|
# File 'lib/jump_in/password_reset.rb', line 16
def set_token(user:, token: nil)
token ||= generate_unique_token_for(user: user)
user.update_attribute(:password_reset_token, token)
end
|
#token_correct?(user_token:, received_token:) ⇒ Boolean
50
51
52
|
# File 'lib/jump_in/password_reset.rb', line 50
def token_correct?(user_token:, received_token:)
user_token == received_token
end
|
#token_uniq?(user:, token:) ⇒ Boolean
32
33
34
|
# File 'lib/jump_in/password_reset.rb', line 32
def token_uniq?(user:, token:)
!user.class.where(password_reset_token: token).exists?
end
|
#token_uniq_or_empty?(user:, token:) ⇒ Boolean
28
29
30
|
# File 'lib/jump_in/password_reset.rb', line 28
def token_uniq_or_empty?(user:, token:)
(token && token_uniq?(user: user, token: token)) || token.nil?
end
|
#update_password_for(user:, password:, password_confirmation:, password_reset_token:) ⇒ Object
41
42
43
44
45
46
47
48
|
# File 'lib/jump_in/password_reset.rb', line 41
def update_password_for(user:, password:, password_confirmation:,
password_reset_token:)
return false unless token_correct?(user_token: user.password_reset_token,
received_token: password_reset_token)
user.update_attributes(password: password,
password_confirmation: password_confirmation,
password_reset_token: nil)
end
|