From a0a245a3eb2910a971279a6f938df08c7fef83bb Mon Sep 17 00:00:00 2001 From: Mikkel Malmberg Date: Sat, 17 Jun 2023 09:31:31 +0200 Subject: [PATCH] Move token availability checking to its own method for easier overriding --- app/models/passwordless/session.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/models/passwordless/session.rb b/app/models/passwordless/session.rb index 8779792..6274f33 100644 --- a/app/models/passwordless/session.rb +++ b/app/models/passwordless/session.rb @@ -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