Sha256: 3b30807821ac87a05510ca911e76cca636b53d2220c8c277f183f51df9573b46
Contents?: true
Size: 1.17 KB
Versions: 1
Compression:
Stored size: 1.17 KB
Contents
class UserSession < ApplicationRecord belongs_to :user scope :active, -> { where(revoked_at: nil, logged_out_at: nil) } validates :user, presence: true validates :remember_token, presence: true before_validation :set_remember_token def active? !logged_out? && !revoked? end def logged_out? logged_out_at.present? end def revoked? revoked_at.present? end def sudo? sudo_enabled_at.present? && sudo_enabled_at > 1.hour.ago end def sudo self.sudo_enabled_at = Time.now save! end def logout self.logged_out_at = Time.now save! end def access(request, tracking=true) self.accessed_at = Time.now self.ip = request.remote_ip if tracking self.user_agent = request.user_agent if tracking save! end private # The tokens created by this method have unique indexes but collisions are very # unlikely (1/64^32). Because of this there shouldn't be a conflict. If one occurs # the ActiveRecord::StatementInvalid or ActiveRecord::RecordNotUnique exeception # should bubble up. def set_remember_token self.remember_token = SecureRandom.urlsafe_base64(32) if self.remember_token.blank? end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
authkit-0.7.0 | lib/generators/authkit/templates/app/models/user_session.rb |