1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
module Rack
module OAuth2
module Server
class Authorize
module Extension
class CodeAndToken < Abstract::Handler
class << self
def response_type_for?(response_type)
response_type.split.sort == ['code', 'token']
end
end
def _call(env)
@request = Request.new env
@response = Response.new request
super
end
class Request < Authorize::Token::Request
include Server::Extension::PKCE::AuthorizationRequest
def initialize(env)
super
@response_type = [:code, :token]
attr_missing!
end
end
class Response < Authorize::Token::Response
attr_required :code
def protocol_params
super.merge(code: code)
end
end
end
end
end
end
end
end
|