Sha256: 09428c7ac98fca7ec643d4a1b3a0082f8d84c99ae14e9f3809737d597bfd1e58

Contents?: true

Size: 816 Bytes

Versions: 52

Compression:

Stored size: 816 Bytes

Contents

# frozen_string_literal: true

require 'securerandom'

module Osso
  module OAuth2Token
    def self.included(klass)
      klass.class_eval do
        cattr_accessor :default_lifetime
        self.default_lifetime = 1.minute
        belongs_to :user
        belongs_to :oauth_client

        before_validation :setup, on: :create
        validates :oauth_client, :expires_at, presence: true
        validates :token, presence: true, uniqueness: true

        scope :valid, -> { where('expires_at > ?', Time.now.utc) }
      end
    end

    def expires_in
      (expires_at - Time.now.utc).to_i
    end

    def expired!
      self.expires_at = Time.now.utc
      save!
    end

    private

    def setup
      self.token = SecureRandom.hex(32)
      self.expires_at ||= default_lifetime.from_now
    end
  end
end

Version data entries

52 entries across 52 versions & 1 rubygems

Version Path
osso-0.1.2 lib/osso/lib/oauth2_token.rb
osso-0.1.1 lib/osso/lib/oauth2_token.rb
osso-0.1.0 lib/osso/lib/oauth2_token.rb
osso-0.0.11 lib/osso/lib/oauth2_token.rb
osso-0.0.10 lib/osso/lib/oauth2_token.rb
osso-0.0.8 lib/osso/lib/oauth2_token.rb
osso-0.0.7 lib/osso/lib/oauth2_token.rb
osso-0.0.6 lib/osso/lib/oauth2_token.rb
osso-0.0.6.alpha lib/osso/lib/oauth2_token.rb
osso-0.0.5 lib/osso/lib/oauth2_token.rb
osso-0.0.5.pre.lambda lib/osso/lib/oauth2_token.rb
osso-0.0.5.pre.kappa lib/osso/lib/oauth2_token.rb
osso-0.0.5.pre.iota lib/osso/lib/oauth2_token.rb
osso-0.0.5.pre.theta lib/osso/lib/oauth2_token.rb
osso-0.0.5.pre.eta lib/osso/lib/oauth2_token.rb
osso-0.0.5.pre.zeta lib/osso/lib/oauth2_token.rb
osso-0.0.5.pre.epsilon lib/osso/lib/oauth2_token.rb
osso-0.0.5.pre.delta lib/osso/lib/oauth2_token.rb
osso-0.0.5.pre.gamma lib/osso/lib/oauth2_token.rb
osso-0.0.5.pre.beta lib/osso/lib/oauth2_token.rb