Sha256: ade98fe8a36706fb19cd4e5c97a169d55c03987476ff316259910f985b228450

Contents?: true

Size: 1.2 KB

Versions: 2

Compression:

Stored size: 1.2 KB

Contents

require 'doorkeeper-mongodb/compatible'

module Doorkeeper
  class AccessToken
    include DoorkeeperMongodb::Compatible

    include MongoMapper::Document

    include DoorkeeperMongodb::Mixins::MongoMapper::AccessTokenMixin

    safe
    timestamps!

    set_collection_name 'oauth_access_tokens'

    key :resource_owner_id,       ObjectId
    key :application_id,          ObjectId
    key :token,                   String
    key :refresh_token,           String
    key :previous_refresh_token,  String
    key :expires_in,              Integer
    key :revoked_at,              DateTime
    key :scopes,                  String

    def self.last
      sort(:created_at).last
    end

    def self.create_indexes
      ensure_index :token, unique: true
      ensure_index [[:refresh_token, 1]], unique: true, sparse: true
    end

    def self.refresh_token_revoked_on_use?
      keys.keys.include?('previous_refresh_token')
    end

    def self.order_method
      :sort
    end

    def self.created_at_desc
      :created_at.desc
    end

    def save!(options = {})
      if options.key?(:validate)
        super(options.merge(safe: options.delete(:validate)))
      else
        super
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
doorkeeper-mongodb-4.2.0 lib/doorkeeper/orm/mongo_mapper/access_token.rb
doorkeeper-mongodb-4.1.0 lib/doorkeeper/orm/mongo_mapper/access_token.rb