Sha256: 124088122244b3204e670928e5da1ff3353d1dbd6df33e85b69277a4b4770d56
Contents?: true
Size: 1017 Bytes
Versions: 17
Compression:
Stored size: 1017 Bytes
Contents
module ExpirableToken def self.included(klass) klass.class_eval do cattr_accessor :default_lifetime self.default_lifetime = 1.minute belongs_to :user belongs_to :client before_validation :init_token, :on => :create, :unless => :token? before_validation :init_expires_at, :on => :create, :unless => :expires_at? validates :expires_at, :presence => true validates :client, :presence => true validates :token, :presence => true, :uniqueness => true # TODO: this should be a default scope once rails default_scope supports lambda's scope :valid, lambda { where(self.arel_table[:expires_at].gteq(Time.now.utc)) } end end def expires_in (expires_at - Time.now.utc).to_i end def expired! self.expires_at = Time.now.utc self.save! end private def init_token self.token = Devise::Oauth2Providable.random_id end def init_expires_at self.expires_at = self.default_lifetime.from_now end end
Version data entries
17 entries across 17 versions & 1 rubygems