def process_grant(data)
server.logger.debug "processing grant for path #{request.path}"
secret = server.info.delete(:client_secret)
do_authcode = server.info.delete(:do_authcode)
ti = TokenIssuer.new(Config.target, server.info.delete(:client_id), secret,
{ token_target: Config.target_value(:token_target),
basic_auth: Config.target_value(:basic_auth),
use_pkce: true,
code_verifier: server.info.delete(:code_verifier),
skip_ssl_validation: Config.target_value(:skip_ssl_validation)})
tkn = do_authcode ? ti.authcode_grant(server.info.delete(:uri), data) :
ti.implicit_grant(server.info.delete(:uri), data)
server.info.update(token_info: tkn.info)
reply.text "you are now logged in and can close this window"
rescue TargetError => e
reply.text "#{e.message}:\r\n#{Util.json_pretty(e.info)}\r\n#{e.backtrace}"
rescue Exception => e
reply.text "#{e.message}\r\n#{e.backtrace}"
ensure
server.logger.debug "reply: #{reply.body}"
end