From 8371559978f4598db91537a85991eb369cf950af Mon Sep 17 00:00:00 2001 From: pricelees Date: Sun, 13 Jul 2025 20:35:31 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20CookieUtils=EB=A5=BC=20=ED=99=9C?= =?UTF-8?q?=EC=9A=A9=ED=95=9C=20MemberIdResolver=20=EC=BD=94=ED=8B=80?= =?UTF-8?q?=EB=A6=B0=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/web/support/MemberIdResolver.kt | 71 +++++++------------ 1 file changed, 26 insertions(+), 45 deletions(-) diff --git a/src/main/java/roomescape/system/auth/web/support/MemberIdResolver.kt b/src/main/java/roomescape/system/auth/web/support/MemberIdResolver.kt index 987b0985..a22d5fc5 100644 --- a/src/main/java/roomescape/system/auth/web/support/MemberIdResolver.kt +++ b/src/main/java/roomescape/system/auth/web/support/MemberIdResolver.kt @@ -1,52 +1,33 @@ -package roomescape.system.auth.web.support; +package roomescape.system.auth.web.support -import java.util.Arrays; - -import org.springframework.core.MethodParameter; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.support.WebDataBinderFactory; -import org.springframework.web.context.request.NativeWebRequest; -import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.method.support.ModelAndViewContainer; - -import jakarta.servlet.http.Cookie; -import jakarta.servlet.http.HttpServletRequest; -import roomescape.system.auth.infrastructure.jwt.JwtHandler; -import roomescape.system.exception.ErrorType; -import roomescape.system.exception.RoomEscapeException; +import jakarta.servlet.http.HttpServletRequest +import org.springframework.core.MethodParameter +import org.springframework.stereotype.Component +import org.springframework.web.bind.support.WebDataBinderFactory +import org.springframework.web.context.request.NativeWebRequest +import org.springframework.web.method.support.HandlerMethodArgumentResolver +import org.springframework.web.method.support.ModelAndViewContainer +import roomescape.system.auth.infrastructure.jwt.JwtHandler @Component -public class MemberIdResolver implements HandlerMethodArgumentResolver { +class MemberIdResolver( + private val jwtHandler: JwtHandler +) : HandlerMethodArgumentResolver { - private static final String ACCESS_TOKEN_COOKIE_NAME = "accessToken"; + override fun supportsParameter(parameter: MethodParameter): Boolean { + return parameter.hasParameterAnnotation(MemberId::class.java) + } - private final JwtHandler jwtHandler; + @Throws(Exception::class) + override fun resolveArgument( + parameter: MethodParameter, + mavContainer: ModelAndViewContainer?, + webRequest: NativeWebRequest, + binderFactory: WebDataBinderFactory? + ): Any { + val request: HttpServletRequest = webRequest.nativeRequest as HttpServletRequest + val token: String = request.accessTokenCookie().value - public MemberIdResolver(JwtHandler jwtHandler) { - this.jwtHandler = jwtHandler; - } - - @Override - public boolean supportsParameter(MethodParameter parameter) { - return parameter.hasParameterAnnotation(MemberId.class); - } - - @Override - public Object resolveArgument( - MethodParameter parameter, - ModelAndViewContainer mavContainer, - NativeWebRequest webRequest, - WebDataBinderFactory binderFactory - ) throws Exception { - Cookie[] cookies = webRequest.getNativeRequest(HttpServletRequest.class).getCookies(); - if (cookies == null) { - throw new RoomEscapeException(ErrorType.NOT_EXIST_COOKIE, HttpStatus.UNAUTHORIZED); - } - return Arrays.stream(cookies) - .filter(cookie -> cookie.getName().equals(ACCESS_TOKEN_COOKIE_NAME)) - .findAny() - .map(cookie -> jwtHandler.getMemberIdFromToken(cookie.getValue())) - .orElseThrow(() -> new RoomEscapeException(ErrorType.INVALID_TOKEN, HttpStatus.UNAUTHORIZED)); - } + return jwtHandler.getMemberIdFromToken(token) + } }