class Grape::OAuth2::Strategies::RefreshToken

Refresh Token strategy class. Processes request and respond with Access Token.

Public Class Methods

process(request) click to toggle source

Processes Refresh Token request.

# File lib/grape_oauth2/strategies/refresh_token.rb, line 9
def process(request)
  client = authenticate_client(request)

  request.invalid_client! if client.nil?

  refresh_token = config.access_token_class.authenticate(request.refresh_token, type: :refresh_token)
  request.invalid_grant! if refresh_token.nil?
  request.unauthorized_client! if refresh_token && refresh_token.client != client

  token = config.access_token_class.create_for(client, refresh_token.resource_owner)
  run_on_refresh_callback(refresh_token) if config.on_refresh_runnable?

  expose_to_bearer_token(token)
end

Private Class Methods

run_on_refresh_callback(access_token) click to toggle source

Invokes custom callback on Access Token refresh. If callback is a proc, then call it with token. If access token responds to callback value (symbol for example), then call it from the token.

@param access_token [Object] Access Token instance

# File lib/grape_oauth2/strategies/refresh_token.rb, line 32
def run_on_refresh_callback(access_token)
  callback = config.on_refresh

  if callback.respond_to?(:call)
    callback.call(access_token)
  elsif access_token.respond_to?(callback)
    access_token.send(callback)
  else
    raise ArgumentError, ":on_refresh is not a block and Access Token class doesn't respond to #{callback}!"
  end
end