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