class Simple::OAuth2::Generators::Authorization

Authorization generator class Processes the request by required Response Type and builds the response

Public Class Methods

generate_for(env) { |request, response| ... } click to toggle source

Generates Authorization Response based on the request

@return [Simple::OAuth2::Responses] response

# File lib/simple_oauth2/generators/authorization.rb, line 12
def generate_for(env, &_block)
  authorization = Rack::OAuth2::Server::Authorize.new do |request, response|
    request.unsupported_response_type! unless allowed_types.include?(request.response_type.to_s)

    if block_given?
      yield request, response
    else
      execute_default(request, response)
    end
  end

  Simple::OAuth2::Responses.new(authorization.call(env))
rescue Rack::OAuth2::Server::Authorize::BadRequest => error
  error_response(error)
end

Private Class Methods

error_response(error) click to toggle source

Returns error Rack::Response

# File lib/simple_oauth2/generators/authorization.rb, line 31
def error_response(error)
  response = Rack::Response.new
  response.status = error.status
  response.header['Content-Type'] = 'application/json'
  response.write(JSON.dump(Rack::OAuth2::Util.compact_hash(error.protocol_params)))

  Simple::OAuth2::Responses.new(response.finish)
end
execute_default(request, response) click to toggle source

Runs default Simple::OAuth2 functionality for Authorization endpoint

@param request [Rack::Request] request object @param response [Rack::Response] response object

# File lib/simple_oauth2/generators/authorization.rb, line 45
def execute_default(request, response)
  find_strategy(request.response_type).process(request, response)
  response.approve!
  response
end
find_strategy(response_type) click to toggle source

Returns Simple::OAuth2 strategy class by Response Type

@param response_type [Symbol] response type value

@return [Code, Token] strategy class

# File lib/simple_oauth2/generators/authorization.rb, line 57
def find_strategy(response_type)
  "Simple::OAuth2::Strategies::#{response_type.to_s.classify}".constantize
end