diff options
Diffstat (limited to 'src/main/scala/xyz/driver/core/rest/DriverRoute.scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/rest/DriverRoute.scala | 12 |
1 files changed, 11 insertions, 1 deletions
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() } |