1+ package com .blockcloud .exception .handler ;
2+
3+ import com .blockcloud .domain .user .User ;
4+ import com .blockcloud .dto .oauth .CustomOAuth2User ;
5+ import com .blockcloud .jwt .JWTUtil ;
6+ import com .blockcloud .service .CookieService ;
7+ import com .fasterxml .jackson .databind .ObjectMapper ;
8+ import jakarta .servlet .http .Cookie ;
9+ import jakarta .servlet .http .HttpServletRequest ;
10+ import jakarta .servlet .http .HttpServletResponse ;
11+ import lombok .AllArgsConstructor ;
12+ import org .springframework .http .HttpStatus ;
13+ import org .springframework .security .core .Authentication ;
14+ import org .springframework .security .web .authentication .AuthenticationSuccessHandler ;
15+ import java .io .IOException ;
16+ import java .io .PrintWriter ;
17+ import java .util .Map ;
18+
119@ AllArgsConstructor
220public class OAuth2SuccessHandler implements AuthenticationSuccessHandler {
321
@@ -6,6 +24,7 @@ public class OAuth2SuccessHandler implements AuthenticationSuccessHandler {
624
725 @ Override
826 public void onAuthenticationSuccess (HttpServletRequest request , HttpServletResponse response , Authentication authentication ) throws IOException {
27+
928 CustomOAuth2User customOAuth2User = (CustomOAuth2User ) authentication .getPrincipal ();
1029 User user = customOAuth2User .getUser ();
1130 ObjectMapper objectMapper = new ObjectMapper ();
@@ -17,7 +36,6 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
1736 Cookie refreshCookie = cookieService .createCookie ("refresh" , refreshToken , 24 * 60 * 60 * 1000L );
1837 response .addCookie (refreshCookie );
1938
20- // 리다이렉트 대신 JSON 응답을 직접 보냄
2139 response .setStatus (HttpStatus .OK .value ());
2240 response .setContentType ("application/json;charset=UTF-8" );
2341
@@ -28,17 +46,17 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
2846 "imgUrl" , user .getImgUrl (),
2947 "userName" , user .getUsername (),
3048 "role" , user .getRole (),
31- "access" , accessToken // 액세스 토큰도 응답 본문에 포함
49+ "access" , accessToken
3250 )
3351 );
34-
52+
3553 try (PrintWriter writer = response .getWriter ()) {
3654 writer .write (userJson );
3755 writer .flush ();
3856 }
3957
4058 } catch (IOException e ) {
41- e .printStackTrace (); // 로깅
59+ e .printStackTrace ();
4260 response .setStatus (HttpStatus .INTERNAL_SERVER_ERROR .value ());
4361 response .setContentType ("application/json;charset=UTF-8" );
4462
0 commit comments