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.config.default_scopes

  doorkeeper_render_error unless valid_doorkeeper_token?
end
doorkeeper_forbidden_render_options(**) click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 14
def doorkeeper_forbidden_render_options(**); end
doorkeeper_unauthorized_render_options(**) click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 12
def doorkeeper_unauthorized_render_options(**); end
valid_doorkeeper_token?() click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 16
def valid_doorkeeper_token?
  doorkeeper_token&.acceptable?(@_doorkeeper_scopes)
end

Private Instance Methods

doorkeeper_error() click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 44
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 68
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 22
def doorkeeper_render_error
  error = doorkeeper_error
  error.raise_exception! if Doorkeeper.config.raise_on_errors?

  headers.merge!(error.headers.reject { |k| k == "Content-Type" })
  doorkeeper_render_error_with(error)
end
doorkeeper_render_error_with(error) click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 30
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 52
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 60
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 72
def doorkeeper_token
  @doorkeeper_token ||= OAuth::Token.authenticate(
    request,
    *Doorkeeper.config.access_token_methods,
  )
end