module Doorkeeper::Rails::Helpers

Public Instance Methods

doorkeeper_authorize!(*scopes) click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 6
def doorkeeper_authorize!(*scopes)
  @_doorkeeper_scopes = scopes.presence || Doorkeeper.configuration.default_scopes

  if !valid_doorkeeper_token?
    doorkeeper_render_error
  end
end
doorkeeper_forbidden_render_options(error: nil) click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 17
def doorkeeper_forbidden_render_options(error: nil)
end
doorkeeper_unauthorized_render_options(error: nil) click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 14
def doorkeeper_unauthorized_render_options(error: nil)
end
valid_doorkeeper_token?() click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 20
def valid_doorkeeper_token?
  doorkeeper_token && doorkeeper_token.acceptable?(@_doorkeeper_scopes)
end

Private Instance Methods

doorkeeper_error() click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 45
def doorkeeper_error
  if doorkeeper_invalid_token_response?
    OAuth::InvalidTokenResponse.from_access_token(doorkeeper_token)
  else
    OAuth::ForbiddenTokenResponse.from_scopes(@_doorkeeper_scopes)
  end
end
doorkeeper_invalid_token_response?() click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 69
def doorkeeper_invalid_token_response?
  !doorkeeper_token || !doorkeeper_token.accessible?
end
doorkeeper_render_error() click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 26
def doorkeeper_render_error
  error = doorkeeper_error
  headers.merge! error.headers.reject { |k| "Content-Type" == k }
  doorkeeper_render_error_with(error)
end
doorkeeper_render_error_with(error) click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 32
def doorkeeper_render_error_with(error)
  options = doorkeeper_render_options(error) || {}
  status = doorkeeper_status_for_error(
    error, options.delete(:respond_not_found_when_forbidden))
  if options.blank?
    head status
  else
    options[:status] = status
    options[:layout] = false if options[:layout].nil?
    render options
  end
end
doorkeeper_render_options(error) click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 53
def doorkeeper_render_options(error)
  if doorkeeper_invalid_token_response?
    doorkeeper_unauthorized_render_options(error: error)
  else
    doorkeeper_forbidden_render_options(error: error)
  end
end
doorkeeper_status_for_error(error, respond_not_found_when_forbidden) click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 61
def doorkeeper_status_for_error(error, respond_not_found_when_forbidden)
  if respond_not_found_when_forbidden && error.status == :forbidden
    :not_found
  else
    error.status
  end
end
doorkeeper_token() click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 73
def doorkeeper_token
  @_doorkeeper_token ||= OAuth::Token.authenticate(
    request,
    *Doorkeeper.configuration.access_token_methods
  )
end