From db5f3bc8223f92db5fac630e8359609146e24b77 Mon Sep 17 00:00:00 2001 From: devxb Date: Thu, 7 Mar 2024 18:07:00 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20gallery=EB=8F=84=EB=A9=94=EC=9D=B8?= =?UTF-8?q?=EC=97=90=20=EC=98=88=EC=99=B8=20=ED=95=B8=EB=93=A4=EB=9F=AC?= =?UTF-8?q?=EB=A5=BC=20=EC=B6=94=EA=B0=80=ED=95=98=EA=B3=A0,=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EC=8B=A4=ED=8C=A8=EC=8B=9C=20=EC=98=88=EC=99=B8=20?= =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80=EB=A5=BC=20=EB=8D=98=EC=A7=80?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/interceptor/AuthExceptionAdvice.java | 16 ++++++++++++++ .../CannotValidMockTokenException.java | 4 ---- .../CannotValidTokenException.java | 8 +++++++ .../nalab/auth/interceptor/ErrorTemplate.java | 21 +++++++++++++++++++ .../interceptor/JwtDecryptInterceptor.java | 12 +++++++++-- .../src/main/java/module-info.java | 7 ------- .../nalab/gallery/controller/ErrorTemplate.kt | 15 +++++++++++++ .../gallery/controller/GalleryController.kt | 4 ++++ 8 files changed, 74 insertions(+), 13 deletions(-) create mode 100644 auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/AuthExceptionAdvice.java delete mode 100644 auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/CannotValidMockTokenException.java create mode 100644 auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/CannotValidTokenException.java create mode 100644 auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/ErrorTemplate.java delete mode 100644 auth/auth-interceptor/src/main/java/module-info.java create mode 100644 gallery/src/main/kotlin/me/nalab/gallery/controller/ErrorTemplate.kt diff --git a/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/AuthExceptionAdvice.java b/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/AuthExceptionAdvice.java new file mode 100644 index 00000000..126bfda5 --- /dev/null +++ b/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/AuthExceptionAdvice.java @@ -0,0 +1,16 @@ +package me.nalab.auth.interceptor; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@RestControllerAdvice +public class AuthExceptionAdvice { + + @ExceptionHandler(CannotValidTokenException.class) + @ResponseStatus(HttpStatus.UNAUTHORIZED) + public ErrorTemplate handleCannotValidTokenException(CannotValidTokenException exception) { + return ErrorTemplate.of(exception.getMessage()); + } +} diff --git a/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/CannotValidMockTokenException.java b/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/CannotValidMockTokenException.java deleted file mode 100644 index 93c1c6bc..00000000 --- a/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/CannotValidMockTokenException.java +++ /dev/null @@ -1,4 +0,0 @@ -package me.nalab.auth.interceptor; - -public class CannotValidMockTokenException extends RuntimeException { -} diff --git a/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/CannotValidTokenException.java b/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/CannotValidTokenException.java new file mode 100644 index 00000000..5498f7db --- /dev/null +++ b/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/CannotValidTokenException.java @@ -0,0 +1,8 @@ +package me.nalab.auth.interceptor; + +public class CannotValidTokenException extends RuntimeException { + + public CannotValidTokenException(String message) { + super(message); + } +} diff --git a/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/ErrorTemplate.java b/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/ErrorTemplate.java new file mode 100644 index 00000000..e7ed8cd2 --- /dev/null +++ b/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/ErrorTemplate.java @@ -0,0 +1,21 @@ +package me.nalab.auth.interceptor; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; + +@Getter +public class ErrorTemplate { + + @JsonProperty("response_messages") + private final String message; + + private ErrorTemplate(String message) { + this.message = message; + } + + public static ErrorTemplate of(String message) { + return new ErrorTemplate(message); + } + +} + diff --git a/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/JwtDecryptInterceptor.java b/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/JwtDecryptInterceptor.java index 4604ad64..d3e1a7fc 100644 --- a/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/JwtDecryptInterceptor.java +++ b/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/JwtDecryptInterceptor.java @@ -30,12 +30,20 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons if (!isExcludedURI(request)) { String token = request.getHeader("Authorization"); throwIfCannotValidToken(token); - Long targetId = targetIdGetPort.getTargetId(token.split(" ")[1]); + Long targetId = getTargetId(token); request.setAttribute("logined", targetId); } return true; } + private Long getTargetId(String token) { + try { + return targetIdGetPort.getTargetId(token.split(" ")[1]); + } catch (Exception exception) { + throw new CannotValidTokenException(exception.getMessage()); + } + } + private boolean isPreflight(HttpServletRequest request) { return request.getMethod().equals("OPTIONS"); } @@ -63,7 +71,7 @@ private boolean isExcludedURI(HttpServletRequest httpServletRequest) { private void throwIfCannotValidToken(String token) { if (token == null) { - throw new CannotValidMockTokenException(); + throw new CannotValidTokenException("Null token"); } } diff --git a/auth/auth-interceptor/src/main/java/module-info.java b/auth/auth-interceptor/src/main/java/module-info.java deleted file mode 100644 index ecae26d5..00000000 --- a/auth/auth-interceptor/src/main/java/module-info.java +++ /dev/null @@ -1,7 +0,0 @@ -module luffy.auth.auth.interceptor.main { - requires spring.webmvc; - requires spring.context; - requires spring.beans; - requires luffy.auth.auth.application.main; - requires org.apache.tomcat.embed.core; -} diff --git a/gallery/src/main/kotlin/me/nalab/gallery/controller/ErrorTemplate.kt b/gallery/src/main/kotlin/me/nalab/gallery/controller/ErrorTemplate.kt new file mode 100644 index 00000000..ea284984 --- /dev/null +++ b/gallery/src/main/kotlin/me/nalab/gallery/controller/ErrorTemplate.kt @@ -0,0 +1,15 @@ +package me.nalab.gallery.controller + +import com.fasterxml.jackson.annotation.JsonProperty + +class ErrorTemplate( + @JsonProperty("response_messages") + private val message: String, +) { + companion object { + fun of(message: String): ErrorTemplate { + return ErrorTemplate(message) + } + } +} + diff --git a/gallery/src/main/kotlin/me/nalab/gallery/controller/GalleryController.kt b/gallery/src/main/kotlin/me/nalab/gallery/controller/GalleryController.kt index 18c21259..1024b64e 100644 --- a/gallery/src/main/kotlin/me/nalab/gallery/controller/GalleryController.kt +++ b/gallery/src/main/kotlin/me/nalab/gallery/controller/GalleryController.kt @@ -48,4 +48,8 @@ class GalleryController( return galleryGetApp.getGalleries(job, page, count, orderType) } + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(IllegalArgumentException::class) + fun handleIllegalArgumentException(exception: IllegalArgumentException): ErrorTemplate = + ErrorTemplate.of(exception.message ?: "잘못된 요청입니다.") }