diff --git a/lib/puppet/network/http/api/v2/authorization.rb b/lib/puppet/network/http/api/v2/authorization.rb index 010376a06..fff0da02f 100644 --- a/lib/puppet/network/http/api/v2/authorization.rb +++ b/lib/puppet/network/http/api/v2/authorization.rb @@ -1,13 +1,15 @@ class Puppet::Network::HTTP::API::V2::Authorization include Puppet::Network::Authorization def call(request, response) - raise Puppet::Network::HTTP::Error::HTTPNotAuthorizedError, "Only GET requests are authorized for V2 endpoints" unless request.method == "GET" + if request.method != "GET" + raise Puppet::Network::HTTP::Error::HTTPNotAuthorizedError.new("Only GET requests are authorized for V2 endpoints", Puppet::Network::HTTP::Issues::UNSUPPORTED_METHOD) + end begin check_authorization(:find, request.path, request.params) rescue Puppet::Network::AuthorizationError => e - raise Puppet::Network::HTTP::Error::HTTPNotAuthorizedError, e.message, e.backtrace + raise Puppet::Network::HTTP::Error::HTTPNotAuthorizedError.new(e.message, Puppet::Network::HTTP::Issues::FAILED_AUTHORIZATION) end end end diff --git a/lib/puppet/network/http/issues.rb b/lib/puppet/network/http/issues.rb index 9582675a8..77b5f04d3 100644 --- a/lib/puppet/network/http/issues.rb +++ b/lib/puppet/network/http/issues.rb @@ -1,9 +1,10 @@ module Puppet::Network::HTTP::Issues NO_INDIRECTION_REMOTE_REQUESTS = :NO_INDIRECTION_REMOTE_REQUESTS HANDLER_NOT_FOUND = :HANDLER_NOT_FOUND RESOURCE_NOT_FOUND = :RESOURCE_NOT_FOUND RUNTIME_ERROR = :RUNTIME_ERROR MISSING_HEADER_FIELD = :MISSING_HEADER_FIELD UNSUPPORTED_FORMAT = :UNSUPPORTED_FORMAT UNSUPPORTED_METHOD = :UNSUPPORTED_METHOD + FAILED_AUTHORIZATION = :FAILED_AUTHORIZATION end