From db5f3bc8223f92db5fac630e8359609146e24b77 Mon Sep 17 00:00:00 2001 From: devxb Date: Thu, 7 Mar 2024 18:07:00 +0900 Subject: [PATCH 1/3] =?UTF-8?q?refactor:=20gallery=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=EC=97=90=20=EC=98=88=EC=99=B8=20=ED=95=B8=EB=93=A4?= =?UTF-8?q?=EB=9F=AC=EB=A5=BC=20=EC=B6=94=EA=B0=80=ED=95=98=EA=B3=A0,=20?= =?UTF-8?q?=EC=9D=B8=EC=A6=9D=20=EC=8B=A4=ED=8C=A8=EC=8B=9C=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=20=EB=A9=94=EC=8B=9C=EC=A7=80=EB=A5=BC=20=EB=8D=98?= =?UTF-8?q?=EC=A7=80=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95=ED=95=9C?= =?UTF-8?q?=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 ?: "잘못된 요청입니다.") } From adedc21aaf5efb6a727f9a8c30efbd113974faca Mon Sep 17 00:00:00 2001 From: devxb Date: Thu, 7 Mar 2024 18:13:51 +0900 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=20=EC=A0=84=EC=97=AD=20ErrorTempl?= =?UTF-8?q?ate=EC=9D=84=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=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/auth-interceptor/build.gradle | 3 ++- .../auth/interceptor/AuthExceptionAdvice.java | 1 + .../nalab/auth/interceptor/ErrorTemplate.java | 21 ------------------- gallery/build.gradle | 3 ++- .../nalab/gallery/controller/ErrorTemplate.kt | 15 ------------- .../gallery/controller/GalleryController.kt | 1 + 6 files changed, 6 insertions(+), 38 deletions(-) delete mode 100644 auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/ErrorTemplate.java delete mode 100644 gallery/src/main/kotlin/me/nalab/gallery/controller/ErrorTemplate.kt diff --git a/auth/auth-interceptor/build.gradle b/auth/auth-interceptor/build.gradle index 2b138d2b..4b178849 100644 --- a/auth/auth-interceptor/build.gradle +++ b/auth/auth-interceptor/build.gradle @@ -1,5 +1,6 @@ dependencies { implementation project(':auth:auth-application') - + implementation project(':core:exception-handler') + implementation 'org.springframework.boot:spring-boot-starter-web' } 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 index 126bfda5..84140b65 100644 --- 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 @@ -1,5 +1,6 @@ package me.nalab.auth.interceptor; +import me.nalab.core.exception.handler.ErrorTemplate; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; 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 deleted file mode 100644 index e7ed8cd2..00000000 --- a/auth/auth-interceptor/src/main/java/me/nalab/auth/interceptor/ErrorTemplate.java +++ /dev/null @@ -1,21 +0,0 @@ -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/gallery/build.gradle b/gallery/build.gradle index 1a0e5aae..4847c734 100644 --- a/gallery/build.gradle +++ b/gallery/build.gradle @@ -4,9 +4,10 @@ repositories { dependencies { implementation project(":core:data") - implementation project(":core:id-generator:id-core") implementation project(":core:time") + implementation project(":core:exception-handler") implementation project(":survey:survey-application") + implementation project(":core:id-generator:id-core") implementation "org.springframework.boot:spring-boot-starter-web" implementation "org.springframework.boot:spring-boot-starter-data-jpa" diff --git a/gallery/src/main/kotlin/me/nalab/gallery/controller/ErrorTemplate.kt b/gallery/src/main/kotlin/me/nalab/gallery/controller/ErrorTemplate.kt deleted file mode 100644 index ea284984..00000000 --- a/gallery/src/main/kotlin/me/nalab/gallery/controller/ErrorTemplate.kt +++ /dev/null @@ -1,15 +0,0 @@ -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 1024b64e..5aa0ea2b 100644 --- a/gallery/src/main/kotlin/me/nalab/gallery/controller/GalleryController.kt +++ b/gallery/src/main/kotlin/me/nalab/gallery/controller/GalleryController.kt @@ -1,5 +1,6 @@ package me.nalab.gallery.controller +import me.nalab.core.exception.handler.ErrorTemplate import me.nalab.gallery.app.GalleryGetApp import me.nalab.gallery.app.GalleryPreviewApp import me.nalab.gallery.app.GalleryRegisterApp From 9f750be28e9f629d1482d99a04b38f81b38dbd65 Mon Sep 17 00:00:00 2001 From: devxb Date: Thu, 7 Mar 2024 18:15:34 +0900 Subject: [PATCH 3/3] =?UTF-8?q?test:=20bookmark=20e2e=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EC=97=90=EC=84=9C=20body=EC=99=80=20content-type=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=EC=9D=84=20=EC=82=AD=EC=A0=9C=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- support/e2e/v1_12_find_bookmarked_survey.hurl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/support/e2e/v1_12_find_bookmarked_survey.hurl b/support/e2e/v1_12_find_bookmarked_survey.hurl index 96840ffe..b2405d05 100644 --- a/support/e2e/v1_12_find_bookmarked_survey.hurl +++ b/support/e2e/v1_12_find_bookmarked_survey.hurl @@ -133,9 +133,6 @@ Authorization: {{ token_type_1 }} {{ auth_token_1 }} HTTP 200 [Asserts] -header "Content-type" == "application/json" - -jsonpath "$.survey_id" == {{ survey_id_1 }} ########## @@ -144,9 +141,6 @@ Authorization: {{ token_type_1 }} {{ auth_token_1 }} HTTP 200 [Asserts] -header "Content-type" == "application/json" - -jsonpath "$.survey_id" == {{ survey_id_2 }} ##########