class PUNK::Session

@model @property slug(required) [string] a unique identifier for the session while it is being challenged @property message(required) [string] a message to be displayed to the user to let them know what to do

Public Instance Methods

active() click to toggle source
# File lib/punk/models/session.rb, line 48
def active
  where(state: "active")
end
created() click to toggle source
# File lib/punk/models/session.rb, line 40
def created
  where(state: "created")
end
current?() click to toggle source
# File lib/punk/models/session.rb, line 72
def current?
  !timeout?
end
deleted() click to toggle source
# File lib/punk/models/session.rb, line 56
def deleted
  where(state: "deleted")
end
erase() click to toggle source
# File lib/punk/models/session.rb, line 81
def erase
  update(slug: nil, salt: nil, hash: nil)
end
expired() click to toggle source
# File lib/punk/models/session.rb, line 52
def expired
  where(state: "expired")
end
expiring() click to toggle source
# File lib/punk/models/session.rb, line 60
def expiring
  where { Sequel.&({state: ["created", "pending"]}, (created_at < 5.minutes.ago)) }.or { Sequel.&({state: "active"}, ((updated_at < 1.month.ago) | (created_at < 1.year.ago))) }
end
increment_attempts() click to toggle source
# File lib/punk/models/session.rb, line 85
def increment_attempts
  update(attempt_count: attempt_count + 1)
end
pending() click to toggle source
# File lib/punk/models/session.rb, line 44
def pending
  where(state: "pending")
end
timeout?() click to toggle source
# File lib/punk/models/session.rb, line 76
def timeout?
  timeout! if (created? || pending?) && created_at < 5.minutes.ago || active? && (updated_at < 1.month.ago || created_at < 1.year.ago)
  expired?
end
validate() click to toggle source
# File lib/punk/models/session.rb, line 65
def validate
  validates_presence :identity
  validates_includes [:created, :pending, :active, :expired, :deleted], :state
  validates_integer :attempt_count
  validates_includes [0, 1, 2, 3], :attempt_count
end