From 95dcc32a590ceb3b40371e2ef611a22afda5c499 Mon Sep 17 00:00:00 2001 From: Satya Boora Date: Mon, 30 Apr 2018 15:14:33 -0700 Subject: Complete the request with a 401 status code to avoid WWW-authenticate header issue (#160) --- src/main/scala/xyz/driver/core/rest/DriverRoute.scala | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/scala/xyz/driver/core/rest/DriverRoute.scala b/src/main/scala/xyz/driver/core/rest/DriverRoute.scala index c23c44d..538d918 100644 --- a/src/main/scala/xyz/driver/core/rest/DriverRoute.scala +++ b/src/main/scala/xyz/driver/core/rest/DriverRoute.scala @@ -19,7 +19,8 @@ trait DriverRoute { def route: Route def routeWithDefaults: Route = { - (defaultResponseHeaders & handleExceptions(ExceptionHandler(exceptionHandler))) { + (defaultResponseHeaders & handleExceptions(ExceptionHandler(exceptionHandler)) & handleRejections( + authenticationRejectionHandler)) { route } } @@ -97,4 +98,13 @@ trait DriverRoute { protected def errorResponse[T <: Exception](statusCode: StatusCode, message: String, exception: T): Route = { complete(HttpResponse(statusCode, entity = message)) } + + protected def authenticationRejectionHandler: RejectionHandler = + RejectionHandler + .newBuilder() + .handle { + case AuthenticationFailedRejection(_, challenge) => + complete(HttpResponse(StatusCodes.Unauthorized, entity = challenge.realm)) + } + .result() } -- cgit v1.2.3