Skip to content

Commit e839228

Browse files
authored
Refactor/#36 refreshTokens 기능 헤더 관련 로직 서비스 분리
Refactor/#36 refreshTokens 기능 헤더 관련 로직 서비스 분리
2 parents a5642ca + a12096d commit e839228

File tree

3 files changed

+51
-38
lines changed

3 files changed

+51
-38
lines changed

src/main/java/com/group6/accommodation/domain/auth/controller/UserController.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.group6.accommodation.global.security.filter.JwtFilter;
77
import com.group6.accommodation.global.security.service.CustomUserDetails;
88
import com.group6.accommodation.global.security.token.model.dto.LoginTokenResponseDto;
9+
import com.group6.accommodation.global.util.CookieUtil;
910
import com.group6.accommodation.global.util.ResponseApi;
1011
import io.swagger.v3.oas.annotations.Operation;
1112
import io.swagger.v3.oas.annotations.Parameters;
@@ -55,7 +56,7 @@ public ResponseEntity<ResponseApi<LoginTokenResponseDto>> refreshTokens(
5556
LoginTokenResponseDto result = userService.refreshTokens(accessToken, refreshToken);
5657
ResponseApi<LoginTokenResponseDto> refreshTokens = ResponseApi.success(HttpStatus.OK, result);
5758

58-
HttpHeaders headers = userService.createRefreshTokenCookie(refreshTokens.getData().getRefreshToken());
59+
HttpHeaders headers = CookieUtil.createRefreshTokenCookie(refreshTokens.getData().getRefreshToken());
5960
return ResponseEntity.status(HttpStatus.OK).headers(headers).body(refreshTokens);
6061
}
6162

@@ -72,11 +73,12 @@ public ResponseEntity<ResponseApi<UserResponseDto>> register(
7273

7374
@PostMapping("/api/user/logout")
7475
@Operation(summary = "로그아웃")
75-
7676
public ResponseEntity<?> logout(
7777
@AuthenticationPrincipal CustomUserDetails user
7878
) {
79-
HttpHeaders headers = userService.logout(user.getUserId());
79+
userService.logout(user.getUserId());
80+
81+
HttpHeaders headers = CookieUtil.deleteRefreshTokenCookie();
8082
return ResponseEntity.status(HttpStatus.NO_CONTENT).headers(headers).build();
8183
}
8284
}

src/main/java/com/group6/accommodation/domain/auth/service/UserService.java

+2-35
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@
1212
import com.group6.accommodation.global.security.filter.JwtFilter;
1313
import com.group6.accommodation.global.security.token.model.dto.LoginTokenResponseDto;
1414
import com.group6.accommodation.global.security.token.provider.TokenProvider;
15-
import org.springframework.beans.factory.annotation.Value;
16-
import org.springframework.http.HttpHeaders;
17-
import org.springframework.http.ResponseCookie;
1815
import org.springframework.security.crypto.password.PasswordEncoder;
1916
import org.springframework.stereotype.Service;
2017
import org.springframework.util.StringUtils;
@@ -28,8 +25,7 @@ public class UserService {
2825
private final RefreshTokenRepository refreshTokenRepository;
2926
private final PasswordEncoder passwordEncoder;
3027
private final TokenProvider tokenProvider;
31-
@Value("${jwt.refresh-expiration-time}")
32-
private Long refreshTokenExpireTime;
28+
3329

3430
public UserResponseDto getUserInfo(Long userId) {
3531
UserEntity result = userRepository.findById(userId)
@@ -53,7 +49,7 @@ public UserResponseDto register(UserRequestDto request) {
5349
return UserResponseDto.toResponse(result);
5450
}
5551

56-
public HttpHeaders logout(Long userId) {
52+
public void logout(Long userId) {
5753
if (!userRepository.existsById(userId)) {
5854
throw new AuthException(AuthErrorCode.NOT_FOUNT_USER_BY_USER_ID);
5955
}
@@ -63,13 +59,6 @@ public HttpHeaders logout(Long userId) {
6359
} else {
6460
throw new AuthException(AuthErrorCode.ALREADY_LOGOUT);
6561
}
66-
67-
ResponseCookie refreshTokenCookie = deleteRefreshTokenCookie();
68-
69-
HttpHeaders headers = new HttpHeaders();
70-
headers.add(HttpHeaders.SET_COOKIE, refreshTokenCookie.toString());
71-
72-
return headers;
7362
}
7463

7564
private String encodePassword(String password) {
@@ -99,26 +88,4 @@ private String resolveBearerAccessToken(String bearerAccessToken) {
9988
}
10089
}
10190

102-
public HttpHeaders createRefreshTokenCookie(String refreshToken) {
103-
ResponseCookie refreshTokenCookie = ResponseCookie
104-
.from("refreshToken", refreshToken)
105-
.maxAge(refreshTokenExpireTime)
106-
.path("/")
107-
.httpOnly(true)
108-
.secure(true)
109-
.build();
110-
111-
HttpHeaders headers = new HttpHeaders();
112-
headers.add(HttpHeaders.SET_COOKIE, refreshTokenCookie.toString());
113-
114-
return headers;
115-
}
116-
117-
private ResponseCookie deleteRefreshTokenCookie() {
118-
return ResponseCookie
119-
.from("refreshToken", "")
120-
.maxAge(0)
121-
.path("/api")
122-
.build();
123-
}
12491
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.group6.accommodation.global.util;
2+
3+
import org.springframework.beans.factory.annotation.Value;
4+
import org.springframework.http.HttpHeaders;
5+
import org.springframework.http.ResponseCookie;
6+
import org.springframework.stereotype.Component;
7+
8+
@Component
9+
public final class CookieUtil {
10+
11+
@Value("${jwt.refresh-expiration-time}")
12+
private static Long refreshTokenExpireTime;
13+
14+
private CookieUtil() {
15+
}
16+
17+
public static HttpHeaders createRefreshTokenCookie(String refreshToken) {
18+
ResponseCookie refreshTokenCookie = ResponseCookie
19+
.from("refreshToken", refreshToken)
20+
.maxAge(refreshTokenExpireTime)
21+
.path("/")
22+
.httpOnly(true)
23+
.secure(true)
24+
.build();
25+
26+
HttpHeaders headers = new HttpHeaders();
27+
headers.add(HttpHeaders.SET_COOKIE, refreshTokenCookie.toString());
28+
29+
return headers;
30+
}
31+
32+
public static HttpHeaders deleteRefreshTokenCookie() {
33+
ResponseCookie refreshTokenCookie = ResponseCookie
34+
.from("refreshToken", "")
35+
.maxAge(0)
36+
.path("/")
37+
.build();
38+
39+
HttpHeaders headers = new HttpHeaders();
40+
headers.add(HttpHeaders.SET_COOKIE, refreshTokenCookie.toString());
41+
42+
return headers;
43+
}
44+
}

0 commit comments

Comments
 (0)