From 59c0ce641c62b2ee74fed41d1dfc8aa5f9423449 Mon Sep 17 00:00:00 2001 From: sojungpp Date: Sun, 14 Jul 2024 17:54:06 +0900 Subject: [PATCH] =?UTF-8?q?#329=20refactor:=20LoginResolver=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/resolver/LoginResolver.java | 37 ++++++++++++++----- .../global/util/TokenUtils.java | 1 + 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/example/icebutler_server/global/resolver/LoginResolver.java b/src/main/java/com/example/icebutler_server/global/resolver/LoginResolver.java index c453377..99393de 100644 --- a/src/main/java/com/example/icebutler_server/global/resolver/LoginResolver.java +++ b/src/main/java/com/example/icebutler_server/global/resolver/LoginResolver.java @@ -5,7 +5,6 @@ import com.example.icebutler_server.user.service.UserServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.core.MethodParameter; -import org.springframework.core.env.Environment; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; @@ -21,10 +20,11 @@ @RequiredArgsConstructor @Component -public class LoginResolver implements HandlerMethodArgumentResolver{ +public class LoginResolver implements HandlerMethodArgumentResolver { + public static final String AUTH_HEADER_NAME = "Authorization"; + ; private final TokenUtils tokenUtils; - private final Environment env; private final UserServiceImpl userService; @Override @@ -38,20 +38,39 @@ public Object resolveArgument(@NotNull MethodParameter parameter, ModelAndViewContainer modelAndViewContainer, @NotNull NativeWebRequest webRequest, WebDataBinderFactory binderFactory) { + checkMethodValidation(parameter); + String header = getHeader(webRequest); + String accessToken = getAccessToken(header); + Long userId = getUserId(accessToken); + return userId; + } - Auth auth = parameter.getMethodAnnotation(Auth.class); - if(auth == null) throw new BaseException(INTERNAL_SERVER_ERROR); + private void checkMethodValidation(MethodParameter parameter) { + if (parameter.getMethodAnnotation(Auth.class) == null) { + throw new BaseException(INTERNAL_SERVER_ERROR); + } + } - String header = webRequest.getHeader("Authorization"); - if(!StringUtils.hasText(header)) throw new BaseException(NULL_TOKEN); + private static String getHeader(NativeWebRequest webRequest) { + String header = webRequest.getHeader(AUTH_HEADER_NAME); + if (!StringUtils.hasText(header)) { + throw new BaseException(NULL_TOKEN); + } + return header; + } + private String getAccessToken(String header) { String accessToken = tokenUtils.separateAuthType(header); tokenUtils.isValidToken(accessToken); + if (!tokenUtils.isTokenExists(accessToken)) { + throw new BaseException(EXPIRED_TOKEN); + } + return accessToken; + } + private Long getUserId(String accessToken) { Long userId = Long.valueOf(tokenUtils.getJwtContents(accessToken)); - if(!tokenUtils.isTokenExists(accessToken)) throw new BaseException(EXPIRED_TOKEN); userService.validateUser(userId); - return userId; } } diff --git a/src/main/java/com/example/icebutler_server/global/util/TokenUtils.java b/src/main/java/com/example/icebutler_server/global/util/TokenUtils.java index f69fad8..a7bc6c7 100644 --- a/src/main/java/com/example/icebutler_server/global/util/TokenUtils.java +++ b/src/main/java/com/example/icebutler_server/global/util/TokenUtils.java @@ -163,6 +163,7 @@ public String createRefreshTokenEmail(Long userId, String email) { return tokenType + ONE_BLOCK + refreshToken; } + // TODO isTokenExists 까지 함께 검증하기 public boolean isValidToken(String justToken) { if (justToken != null && justToken.split(ONE_BLOCK).length == 2) justToken = justToken.split(ONE_BLOCK)[1];