Finished phase005
CI / scan_ruby (push) Failing after 1m5s
CI / scan_js (push) Failing after 6s
CI / lint (push) Failing after 1m29s

This commit is contained in:
2026-09-16 15:34:50 -06:00
parent a3a65c24ed
commit 0826d267f2
38 changed files with 1596 additions and 9 deletions
+28
View File
@@ -0,0 +1,28 @@
class UserSession < ApplicationRecord
TOKEN_LENGTH = 32
belongs_to :user
validates :token_digest, presence: true, uniqueness: true
def self.create_for!(user)
raw_token = generate_raw_token
user_session = create!(user: user, token_digest: digest(raw_token), last_used_at: Time.current)
[ user_session, raw_token ]
end
def self.find_by_token(raw_token)
return if raw_token.blank?
find_by(token_digest: digest(raw_token))
end
def self.generate_raw_token
SecureRandom.urlsafe_base64(TOKEN_LENGTH)
end
def self.digest(raw_token)
Digest::SHA256.hexdigest(raw_token.to_s)
end
end