22
33import java .time .LocalDateTime ;
44
5+ import org .springframework .http .HttpStatus ;
6+ import org .springframework .http .ResponseEntity ;
7+ import org .springframework .security .core .Authentication ;
58import org .springframework .stereotype .Service ;
69import org .springframework .transaction .annotation .Transactional ;
710
811import com .nowait .applicationuser .security .jwt .JwtUtil ;
12+ import com .nowait .applicationuser .token .dto .AuthenticationResponse ;
13+ import com .nowait .applicationuser .token .service .TokenService ;
914import com .nowait .domaincorerdb .user .entity .User ;
1015import com .nowait .domaincorerdb .user .exception .UserNotFoundException ;
1116import com .nowait .domaincorerdb .user .repository .UserRepository ;
1722public 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