aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/scala/xyz/driver/core/rest/DriverRoute.scala12
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()
}