Skip to content

Commit

Permalink
Move token availability checking to its own method for easier overriding
Browse files Browse the repository at this point in the history
  • Loading branch information
mikker committed Jun 17, 2023
1 parent 53fd328 commit a0a245a
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions app/models/passwordless/session.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,20 @@ def available?

private

def token_digest_available?(token_digest)
Session.available.where(token_digest: token_digest).none?
end

def set_defaults
self.expires_at ||= Passwordless.expires_at.call
self.timeout_at ||= Passwordless.timeout_at.call

return if self.token || self.token_digest
return if self.token_digest

self.token, self.token_digest = loop {
token = Passwordless.token_generator.call(self)
digest = Passwordless.digest(token)
break [token, digest] unless Session.find_by(token_digest: digest)
break [token, digest] if token_digest_available?(digest)
}
end
end
Expand Down

0 comments on commit a0a245a

Please sign in to comment.