module Sequel::Simple::OAuth2::AccessGrant

AccessGrant role mixin for Sequel. Includes all the required API, associations, validations and callbacks.

Public Class Methods

by_token(token) click to toggle source

Searches for AccessGrant record with the specific `#token` value.

@param token [#to_s] token value (any object that responds to `#to_s`).

@return [Object, nil] AccessGrant object or nil if there is no record with such `#token`.

# File lib/sequel_simple_oauth2/mixins/access_grant.rb, line 50
def self.by_token(token)
  first(token: token.to_s)
end
create_for(client, resource_owner, redirect_uri, scopes = nil) click to toggle source

Create a new AccessGrant object.

@param client [Object] Client instance. @param resource_owner [Object] ResourceOwner instance. @param redirect_uri [String] Redirect URI callback. @param scopes [String] set of scopes.

@return [Object] AccessGrant object.

# File lib/sequel_simple_oauth2/mixins/access_grant.rb, line 63
def self.create_for(client, resource_owner, redirect_uri, scopes = nil)
  create(
    client_id: client.id,
    resource_owner_id: resource_owner.id,
    redirect_uri: redirect_uri,
    scopes: scopes
  )
end

Public Instance Methods

before_validation() click to toggle source
Calls superclass method
# File lib/sequel_simple_oauth2/mixins/access_grant.rb, line 25
def before_validation
  if new?
    # Generate token
    generate_token

    # Setup lifetime for `#code` value.
    setup_expiration
  end

  super
end
generate_token() click to toggle source

Generate token

@return token [String] string object.

# File lib/sequel_simple_oauth2/mixins/access_grant.rb, line 78
def generate_token
  self.token = ::Simple::OAuth2.config.token_generator.generate
end
setup_expiration() click to toggle source

Set lifetime for `#code` value during creating a new record.

@return clock [Time] time object.

# File lib/sequel_simple_oauth2/mixins/access_grant.rb, line 86
def setup_expiration
  self.expires_at = Time.now.utc + ::Simple::OAuth2.config.authorization_code_lifetime if expires_at.nil?
end
validate() click to toggle source

Required fields!

Calls superclass method
# File lib/sequel_simple_oauth2/mixins/access_grant.rb, line 38
def validate
  super
  validates_presence %i[token client_id redirect_uri]
  validates_unique %i[token]
end