module Doorkeeper::Rails::Helpers

Public Instance Methods

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

  unless valid_doorkeeper_token?
    doorkeeper_render_error
  end
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 && doorkeeper_token.acceptable?(@_doorkeeper_scopes)
end

Private Instance Methods

doorkeeper_error() click to toggle source
# File lib/doorkeeper/rails/helpers.rb, line 42
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 66
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
  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 28
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 50
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 58
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 70
def doorkeeper_token
  @_doorkeeper_token ||= OAuth::Token.authenticate(
    request,
    *Doorkeeper.configuration.access_token_methods
  )
end