diff --git a/owner-apigateway-service/src/main/java/com/justpickup/ownerapigatewayservice/handler/GlobalExceptionHandler.java b/owner-apigateway-service/src/main/java/com/justpickup/ownerapigatewayservice/handler/GlobalExceptionHandler.java index 8c309cd..36d9de4 100644 --- a/owner-apigateway-service/src/main/java/com/justpickup/ownerapigatewayservice/handler/GlobalExceptionHandler.java +++ b/owner-apigateway-service/src/main/java/com/justpickup/ownerapigatewayservice/handler/GlobalExceptionHandler.java @@ -3,6 +3,9 @@ package com.justpickup.ownerapigatewayservice.handler; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.MalformedJwtException; +import io.jsonwebtoken.SignatureException; +import io.jsonwebtoken.UnsupportedJwtException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler; import org.springframework.core.io.buffer.DataBuffer; @@ -13,6 +16,7 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import java.util.HashMap; +import java.util.List; import java.util.Map; public class GlobalExceptionHandler implements ErrorWebExceptionHandler { @@ -22,7 +26,11 @@ public class GlobalExceptionHandler implements ErrorWebExceptionHandler { @Override public Mono handle(ServerWebExchange exchange, Throwable ex) { - + List> jwtExceptions = + List.of(SignatureException.class, + MalformedJwtException.class, + UnsupportedJwtException.class, + IllegalArgumentException.class); Class exceptionClass = ex.getClass(); Map responseBody = new HashMap<>(); @@ -31,6 +39,15 @@ public class GlobalExceptionHandler implements ErrorWebExceptionHandler { exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON); responseBody.put("code", "EXPIRED"); responseBody.put("message", "Access Token is Expired!"); + } else if (jwtExceptions.contains(exceptionClass)){ + exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); + exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON); + responseBody.put("code", "INVALID"); + responseBody.put("message", "Invalid Access Token"); + }else{ + exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); + exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON); + responseBody.put("code", "INVALID"); } DataBuffer wrap = null; @@ -43,4 +60,5 @@ public class GlobalExceptionHandler implements ErrorWebExceptionHandler { return exchange.getResponse().writeWith(Flux.just(wrap)); } + }