11package com .nowait .applicationuser .oauth .oauth2 ;
22
33import java .io .IOException ;
4- import java .time .LocalDateTime ;
5- import java .util .Optional ;
64
75import org .springframework .http .ResponseCookie ;
86import org .springframework .security .core .Authentication ;
97import org .springframework .security .web .authentication .SimpleUrlAuthenticationSuccessHandler ;
108import org .springframework .stereotype .Component ;
119import org .springframework .transaction .annotation .Transactional ;
1210
13- import com .nowait .applicationuser .security .jwt .JwtUtil ;
14- import com .nowait .domaincorerdb .token .entity .Token ;
15- import com .nowait .domaincorerdb .token .repository .TokenRepository ;
11+ import com .nowait .applicationuser .token .dto .AuthenticationResponse ;
12+ import com .nowait .applicationuser .token .service .AuthTokenService ;
1613import com .nowait .domaincorerdb .user .entity .User ;
1714import com .nowait .domainuserrdb .oauth .dto .CustomOAuth2User ;
1815
3027@ RequiredArgsConstructor
3128@ Slf4j
3229public class OAuth2LoginSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
33- private final JwtUtil jwtUtil ;
34- private final TokenRepository tokenRepository ;
30+ private final AuthTokenService authTokenService ;
3531
3632 @ Override
3733 @ Transactional
@@ -40,26 +36,11 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
4036
4137 CustomOAuth2User customUserDetails = (CustomOAuth2User )authentication .getPrincipal ();
4238 User user = customUserDetails .getUser ();
43- Long userId = customUserDetails .getUserId ();
44- String role = authentication .getAuthorities ().iterator ().next ().getAuthority ();
4539
46- // JWT 발급
47- String accessToken = jwtUtil .createAccessToken ("accessToken" , userId , role ,
48- Boolean .TRUE .equals (user .getPhoneEntered ()), Boolean .TRUE .equals (user .getIsMarketingAgree ()),60 * 60 * 1000L ); // 1시간
49- String refreshToken = jwtUtil .createRefreshToken ("refreshToken" , userId , 30L * 24 * 60 * 60 * 1000L ); // 30일
50-
51- // 1. refreshToken을 DB에 저장 or update
52- Optional <Token > tokenOptional = tokenRepository .findByUserId (user .getId ());
53- if (tokenOptional .isPresent ()) {
54- Token token = tokenOptional .get ();
55- token .updateRefreshToken (refreshToken , LocalDateTime .now ().plusDays (30 ));
56- } else {
57- Token token = Token .toEntity (user , refreshToken , LocalDateTime .now ().plusDays (30 ));
58- tokenRepository .save (token );
59- }
40+ AuthenticationResponse authenticationResponse = authTokenService .issueTokens (user );
6041
6142 // 2. refreshToken을 HttpOnly 쿠키로 설정 (ResponseCookie로)
62- ResponseCookie refreshTokenCookie = ResponseCookie .from ("refreshToken" , refreshToken )
43+ ResponseCookie refreshTokenCookie = ResponseCookie .from ("refreshToken" , authenticationResponse . getRefreshToken () )
6344 .httpOnly (true )
6445 .secure (false ) // 운영환경에서는 true
6546 .path ("/" )
@@ -71,7 +52,7 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
7152 response .setHeader ("Set-Cookie" , refreshTokenCookie .toString ());
7253
7354 // 3. 프론트엔드로 리다이렉트 (accessToken만 쿼리로 전달)
74- String targetUrl = "https://app.nowait.co.kr/login/success?accessToken=" + accessToken ;
55+ String targetUrl = "https://app.nowait.co.kr/login/success?accessToken=" + authenticationResponse . getAccessToken () ;
7556 response .sendRedirect (targetUrl );
7657 }
7758}
0 commit comments