diff --git a/src/main/java/com/example/skillboost/auth/handler/OAuth2SuccessHandler.java b/src/main/java/com/example/skillboost/auth/handler/OAuth2SuccessHandler.java index 0aeac80..65ecb17 100644 --- a/src/main/java/com/example/skillboost/auth/handler/OAuth2SuccessHandler.java +++ b/src/main/java/com/example/skillboost/auth/handler/OAuth2SuccessHandler.java @@ -13,6 +13,7 @@ import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.stereotype.Component; +import org.springframework.web.util.UriComponentsBuilder; import java.io.IOException; import java.util.HashMap; @@ -27,7 +28,6 @@ public class OAuth2SuccessHandler implements AuthenticationSuccessHandler { private final UserRepository userRepository; private final TokenService tokenService; private final ObjectMapper objectMapper = new ObjectMapper(); - @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, @@ -36,10 +36,11 @@ public void onAuthenticationSuccess(HttpServletRequest request, log.info("OAuth2 인증 성공!"); OAuth2User oAuth2User = (OAuth2User) authentication.getPrincipal(); - String email = (String) oAuth2User.getAttributes().get("email"); + Map attributes = oAuth2User.getAttributes(); + String email = (String) attributes.get("email"); if (email == null || email.isEmpty()) { - String githubId = String.valueOf(oAuth2User.getAttributes().get("id")); + String githubId = String.valueOf(attributes.get("id")); email = githubId + "@github.temp"; log.warn("이메일 비공개 사용자 - 임시 이메일 사용: {}", email); } @@ -59,20 +60,15 @@ public void onAuthenticationSuccess(HttpServletRequest request, log.info("JWT 토큰 생성 및 Redis 저장 완료: {}", user.getEmail()); - // JSON 응답 생성 - Map responseData = new HashMap<>(); - responseData.put("success", true); - responseData.put("accessToken", accessToken); - responseData.put("refreshToken", refreshToken); // 프론트엔드에서 저장해야 함 - responseData.put("email", user.getEmail()); - responseData.put("username", user.getUsername()); + // JSON 응답 대신 리다이렉트를 수행하는 로직 - // 클라이언트에 JWT 응답 - response.setContentType("application/json;charset=UTF-8"); - response.setStatus(HttpServletResponse.SC_OK); - response.getWriter().write(objectMapper.writeValueAsString(responseData)); + String frontendRedirectBaseUrl = "https://www.skill-boost.store"; + String frontendTokenHandlerPath = "/oauth2/redirect"; + String targetUrl = UriComponentsBuilder.fromUriString(frontendRedirectBaseUrl + frontendTokenHandlerPath) + .queryParam("accessToken", accessToken) + .queryParam("refreshToken", refreshToken) + .build().toUriString(); - // 실제 서비스 배포 시, 사용자를 다시 웹사이트 메인 화면으로 돌려보내기 위해 사용 - // response.sendRedirect("http://localhost:3000/oauth2/redirect?accessToken=" + accessToken + "&refreshToken=" + refreshToken); + response.sendRedirect(targetUrl); } } \ No newline at end of file diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index d0b8828..63d724e 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -30,3 +30,8 @@ spring: jwt: secret-key: TXlTdXBlclNlY3JldEtleUZvclNraWxsQm9vc3RQcm9qZWN0MjAyNUNoYWxsZW5nZSE= expiration-ms: 100000 + +gemini: + model: test-model + api: + key: test-key