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

Version Path
devise_oauth2_providable-1.0.1 lib/expirable_token.rb
devise_oauth2_providable-1.0.0 lib/expirable_token.rb
devise_oauth2_providable-1.0.0.beta1 lib/expirable_token.rb
devise_oauth2_providable-0.3.8 lib/expirable_token.rb
devise_oauth2_providable-0.3.7 lib/expirable_token.rb
devise_oauth2_providable-0.3.6 lib/expirable_token.rb
devise_oauth2_providable-0.3.5 lib/expirable_token.rb
devise_oauth2_providable-0.3.4 lib/expirable_token.rb
devise_oauth2_providable-0.3.3 lib/expirable_token.rb
devise_oauth2_providable-0.3.2 lib/expirable_token.rb
devise_oauth2_providable-0.3.1 lib/expirable_token.rb
devise_oauth2_providable-0.3.0 lib/expirable_token.rb
devise_oauth2_providable-0.2.4 lib/expirable_token.rb
devise_oauth2_providable-0.2.3 lib/expirable_token.rb
devise_oauth2_providable-0.2.2 lib/expirable_token.rb
devise_oauth2_providable-0.2.1 lib/expirable_token.rb
devise_oauth2_providable-0.2.0 lib/expirable_token.rb