Skip to content

Commit a4074c1

Browse files
authored
Dev > Main 브랜치 병합
1. Request Parameter 인식되지 않은 오류를 수정 후 Main 브랜치에 병합합니다.
2 parents 0b0c776 + 1993191 commit a4074c1

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

src/main/java/hs/kr/backend/devpals/infra/oauth2/CustomOauth2UserService.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,17 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) {
2727
OAuth2User oAuth2User = super.loadUser(userRequest);
2828
String provider = userRequest.getClientRegistration().getRegistrationId();
2929

30-
// request에 provider 저장
30+
// request + 세션 접근
3131
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
3232
if (attributes != null) {
3333
HttpServletRequest request = attributes.getRequest();
34+
3435
request.setAttribute("provider", provider);
36+
37+
String mode = request.getParameter("state"); // 또는 "mode"
38+
if (mode != null) {
39+
request.getSession().setAttribute("oauth_mode", mode);
40+
}
3541
}
3642

3743
String email = extractEmail(provider, oAuth2User);
@@ -48,6 +54,7 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) {
4854
String githubUrl = oAuth2User.getAttribute("html_url");
4955
user.updateGithub(githubUrl);
5056
}
57+
5158
userRepository.save(user);
5259

5360
Map<String, Object> attributesMap = new java.util.HashMap<>(oAuth2User.getAttributes());
@@ -64,18 +71,14 @@ public static String extractEmail(String provider, OAuth2User oAuth2User) {
6471
switch (provider) {
6572
case "google":
6673
return oAuth2User.getAttribute("email");
67-
6874
case "kakao":
6975
Map<String, Object> kakaoAccount = oAuth2User.getAttribute("kakao_account");
7076
return kakaoAccount != null ? (String) kakaoAccount.get("email") : null;
71-
7277
case "naver":
7378
Map<String, Object> response = oAuth2User.getAttribute("response");
7479
return response != null ? (String) response.get("email") : null;
75-
7680
case "github":
7781
return oAuth2User.getAttribute("email");
78-
7982
default:
8083
throw new IllegalArgumentException("Unsupported provider: " + provider);
8184
}
@@ -85,20 +88,16 @@ public static String extractName(String provider, OAuth2User oAuth2User) {
8588
switch (provider) {
8689
case "google":
8790
return oAuth2User.getAttribute("name");
88-
8991
case "kakao":
9092
Map<String, Object> kakaoAccount = oAuth2User.getAttribute("kakao_account");
9193
if (kakaoAccount == null) return null;
9294
Map<String, Object> profile = (Map<String, Object>) kakaoAccount.get("profile");
9395
return profile != null ? (String) profile.get("nickname") : null;
94-
9596
case "naver":
9697
Map<String, Object> response = oAuth2User.getAttribute("response");
9798
return response != null ? (String) response.get("name") : null;
98-
9999
case "github":
100100
return oAuth2User.getAttribute("name");
101-
102101
default:
103102
throw new IllegalArgumentException("Unsupported provider: " + provider);
104103
}

src/main/java/hs/kr/backend/devpals/infra/oauth2/Oauth2LoginSuccessHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,14 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
4848
UserEntity user = userRepository.findByEmail(email)
4949
.orElseThrow(() -> new CustomException(ErrorException.USER_NOT_FOUND));
5050

51-
String mode = request.getParameter("state");
51+
String mode = (String) request.getSession().getAttribute("oauth_mode");
52+
request.getSession().removeAttribute("oauth_mode"); // 한번 쓰고 제거
53+
5254
if ("github_verify".equals(mode) && "github".equals(provider)) {
5355
String githubUrl = oAuth2User.getAttribute("html_url");
5456
user.updateGithub(githubUrl);
5557
userRepository.save(user);
5658

57-
// 깔끔하게 리디렉션
5859
response.sendRedirect("http://localhost:5173/user/profile?github=success");
5960
return;
6061
}

0 commit comments

Comments
 (0)