Finished phase005
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user