Skip to content

Commit 4ba12e6

Browse files
authored
Merge pull request #312 from GTable/feature/#310-phoneNumber
refactor: 토큰 재발급 로직 수정
2 parents ade2b56 + c1b863e commit 4ba12e6

2 files changed

Lines changed: 38 additions & 10 deletions

File tree

nowait-app-user-api/src/main/java/com/nowait/applicationuser/user/controller/UserController.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import org.springframework.http.HttpStatus;
44
import org.springframework.http.ResponseEntity;
55
import org.springframework.security.core.annotation.AuthenticationPrincipal;
6+
import org.springframework.web.bind.annotation.CookieValue;
67
import org.springframework.web.bind.annotation.PutMapping;
78
import org.springframework.web.bind.annotation.RequestBody;
89
import org.springframework.web.bind.annotation.RequestMapping;
910
import org.springframework.web.bind.annotation.RestController;
1011

12+
import com.nowait.applicationuser.token.dto.AuthenticationResponse;
1113
import com.nowait.applicationuser.user.dto.UserUpdateRequest;
1214
import com.nowait.applicationuser.user.service.UserService;
1315
import com.nowait.common.api.ApiUtils;
@@ -25,17 +27,21 @@ public class UserController {
2527

2628
@PutMapping("/optional-info")
2729
public ResponseEntity<?> putOptional(
28-
@AuthenticationPrincipal CustomOAuth2User customOAuth2User,
30+
@CookieValue(value = "accessToken", required = false) String accessToken,
2931
@Valid @RequestBody UserUpdateRequest req) {
3032

31-
String newAccessToken = userService.putOptional(customOAuth2User.getUserId(), req.phoneNumber(),
33+
if (accessToken == null) {
34+
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("accessToken not found in cookies");
35+
}
36+
37+
AuthenticationResponse authenticationResponse = userService.putOptional(accessToken, req.phoneNumber(),
3238
Boolean.TRUE.equals(req.consent()));
3339

3440
return ResponseEntity
3541
.status(HttpStatus.OK)
3642
.body(
3743
ApiUtils.success(
38-
newAccessToken
44+
authenticationResponse
3945
)
4046
);
4147
}

nowait-app-user-api/src/main/java/com/nowait/applicationuser/user/service/UserService.java

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,15 @@
22

33
import java.time.LocalDateTime;
44

5+
import org.springframework.http.HttpStatus;
6+
import org.springframework.http.ResponseEntity;
7+
import org.springframework.security.core.Authentication;
58
import org.springframework.stereotype.Service;
69
import org.springframework.transaction.annotation.Transactional;
710

811
import com.nowait.applicationuser.security.jwt.JwtUtil;
12+
import com.nowait.applicationuser.token.dto.AuthenticationResponse;
13+
import com.nowait.applicationuser.token.service.TokenService;
914
import com.nowait.domaincorerdb.user.entity.User;
1015
import com.nowait.domaincorerdb.user.exception.UserNotFoundException;
1116
import com.nowait.domaincorerdb.user.repository.UserRepository;
@@ -17,13 +22,17 @@
1722
public class UserService {
1823

1924
private final UserRepository userRepository;
25+
private final TokenService tokenService;
2026
private final JwtUtil jwtUtil;
2127

2228
@Transactional
23-
public String putOptional(Long userId, String phoneNumber, boolean consent) {
29+
public AuthenticationResponse putOptional(String accessToken, String phoneNumber, boolean consent) {
2430

25-
User user = userRepository.findById(userId)
26-
.orElseThrow(UserNotFoundException::new);
31+
Long userId = jwtUtil.getUserId(accessToken);;
32+
String role = jwtUtil.getRole(accessToken);
33+
AuthenticationResponse authenticationResponse;
34+
35+
User user = userRepository.findById(userId).orElseThrow(UserNotFoundException::new);
2736

2837
if (userRepository.existsByPhoneNumberAndIdNot(phoneNumber, userId)) {
2938
throw new IllegalArgumentException("이미 사용 중인 휴대폰 번호입니다.");
@@ -32,11 +41,24 @@ public String putOptional(Long userId, String phoneNumber, boolean consent) {
3241
user.setPhoneNumberAndMarkEntered(phoneNumber, LocalDateTime.now());
3342
user.setIsMarketingAgree(consent, LocalDateTime.now());
3443

35-
String role = "ROLE_" + user.getRole().name();
36-
37-
return jwtUtil.createAccessToken("accessToken", user.getId(), role,
44+
String newAccessToken = jwtUtil.createAccessToken(
45+
"accessToken",
46+
userId,
47+
role,
3848
Boolean.TRUE.equals(user.getPhoneEntered()),
3949
Boolean.TRUE.equals(user.getIsMarketingAgree()),
40-
60 * 60 * 1000L);
50+
60 * 60 * 1000L
51+
);
52+
String newRefreshToken = jwtUtil.createRefreshToken(
53+
"refreshToken",
54+
userId,
55+
60 * 60 * 1000L
56+
);
57+
58+
tokenService.updateRefreshToken(userId, accessToken, newRefreshToken);
59+
60+
authenticationResponse = new AuthenticationResponse(newAccessToken, newRefreshToken);
61+
62+
return authenticationResponse;
4163
}
4264
}

0 commit comments

Comments
 (0)