Sha256: 1a3ddf2a6beb3ca1613dbbc527b2b11c9857033dffcf29b3172e18c5d1244ab1

Contents?: true

Size: 1.89 KB

Versions: 1

Compression:

Stored size: 1.89 KB

Contents

require 'rubygems'
require 'sinatra'

use Rack::Session::Cookie

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../../lib'))
require 'rack/oauth2'

get '/oauth/authorize' do
  authorization_endpoint = Rack::OAuth2::Server::Authorization.new(self)
  response = authorization_endpoint.call(env)
  case response.first
  when 200
    request = env['rack.oauth2.request']
    # output form
    <<-HTML
    <form action="/oauth/authorize" method="post">
      <input type="hidden" name="client_id" value="#{request.client_id}" />
      <input type="hidden" name="redirect_uri" value="#{request.redirect_uri}" />
      <input type="hidden" name="response_type" value="#{request.response_type}" />
      <input type="hidden" name="approved" value="true" />
      <input type="submit" value="allow">
    </form>
    <form action="/oauth/authorize" method="post">
      <input type="hidden" name="client_id" value="#{request.client_id}" />
      <input type="hidden" name="redirect_uri" value="#{request.redirect_uri}" />
      <input type="hidden" name="response_type" value="#{request.response_type}" />
      <input type="hidden" name="response_type" value="code" />
      <input type="submit" value="deny">
    </form>
    HTML
  else
    response
  end
end

post '/oauth/authorize' do
  authorization_endpoint = Rack::OAuth2::Server::Authorization.new(self) do |request, response|
    # allow everything
    params = env['rack.request.form_hash']
    if params['approved']
      response.approve!
      case request
      when Rack::OAuth2::Server::Authorization::Code::Request
        response.code = 'code'
      when Rack::OAuth2::Server::Authorization::Token::Request
        response.access_token = 'access_token'
        response.expires_in = 3600
      end
    else
      raise Rack::OAuth2::Server::Unauthorized.new(:access_denied, 'User rejected the requested access.')
    end
  end
  authorization_endpoint.call(env)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-oauth2-0.0.0 example/server/authorize.rb