@@ -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 }
0 commit comments