Class: Core::Models::OAuth::AccessToken

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document, Mongoid::Timestamps
Defined in:
lib/core/models/oauth/access_token.rb

Overview

An access token is the value assigned to the application to access the data the user is allowed to access.

Author:

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#authorizationCore::Models::OAuth::Authorization

Returns the authorization code that issued this token to the application for this user.

Returns:



22
# File 'lib/core/models/oauth/access_token.rb', line 22

belongs_to :authorization, class_name: 'Core::Models::OAuth::Authorization', inverse_of: :tokens

#expirationInteger

Returns the time, in seconds, after which the token is declared expired, and thus can’t be used anymore.

Returns:

  • (Integer)

    the time, in seconds, after which the token is declared expired, and thus can’t be used anymore.



18
# File 'lib/core/models/oauth/access_token.rb', line 18

field :expiration, type: Integer, default: 86400

#refresh_tokenCore::Models::OAuth::RefreshToken (readonly)

Returns the refresh token linked to this token.

Returns:



28
# File 'lib/core/models/oauth/access_token.rb', line 28

has_one :refresh_token, class_name: 'Core::Models::OAuth::RefreshToken', inverse_of: :token

#valueString

Returns the value of the token, returned to the application when built.

Returns:

  • (String)

    the value of the token, returned to the application when built.



15
# File 'lib/core/models/oauth/access_token.rb', line 15

field :value, type: String, default: ->{ SecureRandom.hex }

Instance Method Details

#expired?Boolean

Checks if the current date is inferior to the creation date + expiration period

Returns:

  • (Boolean)

    TRUE if the token is expired, FALSE otherwise.



36
37
38
39
40
41
42
# File 'lib/core/models/oauth/access_token.rb', line 36

def expired?
  # Handles the case where the token is given to a premium app (our apps have infinite tokens).
  return false if premium?
  return true if refresh_token.used?

  created_at.to_time.to_i + expiration < Time.now.to_i
end

#premium?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/core/models/oauth/access_token.rb', line 53

def premium?
  authorization.application.premium
end

#scopesArray<Core::Models::OAuth::Scope>

Returns the scopes this access token can use to access the application

Returns:



46
47
48
49
50
51
# File 'lib/core/models/oauth/access_token.rb', line 46

def scopes
  # Premium applications (our applications) have all the rights on the API.
  return Core::Models::OAuth::Scope.all.to_a if premium?

  authorization.scopes
end