Module: DoorkeeperMongodb::Mixins::Mongoid::AccessTokenMixin

Extended by:
ActiveSupport::Concern
Includes:
Doorkeeper::Models::Accessible, Doorkeeper::Models::Expirable, Doorkeeper::Models::Reusable, Doorkeeper::Models::Revocable, Doorkeeper::Models::Scopes, Doorkeeper::Models::SecretStorable, Doorkeeper::OAuth::Helpers, Doorkeeper::Orm::Concerns::Mongoid::ResourceOwnerable, BaseMixin
Included in:
Doorkeeper::AccessToken
Defined in:
lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#acceptable?(scopes) ⇒ Boolean

Indicates if token is acceptable for specific scopes.

Parameters:

  • scopes (Array<String>)

    scopes

Returns:

  • (Boolean)

    true if record is accessible and includes scopes or false in other cases



295
296
297
# File 'lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb', line 295

def acceptable?(scopes)
  accessible? && includes_scope?(*scopes)
end

#as_json(_options = {}) ⇒ Hash

JSON representation of the Access Token instance.

Returns:

  • (Hash)

    hash with token data



251
252
253
254
255
256
257
258
259
# File 'lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb', line 251

def as_json(_options = {})
  {
    resource_owner_id: resource_owner_id,
    scope: scopes,
    expires_in: expires_in_seconds,
    application: { uid: application.try(:uid) },
    created_at: created_at.to_i,
  }
end

#plaintext_refresh_tokenObject

We keep a volatile copy of the raw refresh token for initial communication The stored refresh_token may be mapped and not available in cleartext.



301
302
303
304
305
306
307
# File 'lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb', line 301

def plaintext_refresh_token
  if secret_strategy.allows_restoring_secrets?
    secret_strategy.restore_secret(self, :refresh_token)
  else
    @raw_refresh_token
  end
end

#plaintext_tokenObject

We keep a volatile copy of the raw token for initial communication The stored refresh_token may be mapped and not available in cleartext.

Some strategies allow restoring stored secrets (e.g. symmetric encryption) while hashing strategies do not, so you cannot rely on this value returning a present value for persisted tokens.



315
316
317
318
319
320
321
# File 'lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb', line 315

def plaintext_token
  if secret_strategy.allows_restoring_secrets?
    secret_strategy.restore_secret(self, :token)
  else
    @raw_token
  end
end

#revoke_previous_refresh_token!Object

Revokes token with ‘:refresh_token` equal to `:previous_refresh_token` and clears `:previous_refresh_token` attribute.



326
327
328
329
330
331
# File 'lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb', line 326

def revoke_previous_refresh_token!
  return unless self.class.refresh_token_revoked_on_use?

  old_refresh_token&.revoke
  update(previous_refresh_token: "")
end

#same_credential?(access_token) ⇒ Boolean

Indicates whether the token instance have the same credential as the other Access Token.

Parameters:

Returns:

  • (Boolean)

    true if credentials are same of false in other cases



268
269
270
271
# File 'lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb', line 268

def same_credential?(access_token)
  application_id == access_token.application_id &&
    same_resource_owner?(access_token)
end

#same_resource_owner?(access_token) ⇒ Boolean

Indicates whether the token instance have the same credential as the other Access Token.

Parameters:

Returns:

  • (Boolean)

    true if credentials are same of false in other cases



280
281
282
283
284
285
286
# File 'lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb', line 280

def same_resource_owner?(access_token)
  if Doorkeeper::VERSION::MINOR > 3 && Doorkeeper.config.polymorphic_resource_owner?
    resource_owner == access_token.resource_owner
  else
    resource_owner_id == access_token.resource_owner_id
  end
end

#token_typeObject

Access Token type: Bearer.



239
240
241
# File 'lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb', line 239

def token_type
  "Bearer"
end

#use_refresh_token?Boolean

Returns:

  • (Boolean)


243
244
245
246
# File 'lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb', line 243

def use_refresh_token?
  @use_refresh_token ||= false
  !!@use_refresh_token
end