Skip to content

Commit f19d94b

Browse files
committed
fix : 소셜 회원가입 분기를 위해 수정
1 parent 10440d0 commit f19d94b

3 files changed

Lines changed: 29 additions & 10 deletions

File tree

src/main/java/checkmo/authentication/internal/security/auth/PrincipalDetails.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,20 @@ public class PrincipalDetails implements UserDetails, OAuth2User {
1515

1616
private final AuthUser user;
1717
private final Map<String, Object> attributes;
18+
private final boolean newSocialSignUp;
1819

1920
// 이건 이메일 로그인 시 사용하는 생성자
2021
public PrincipalDetails(AuthUser user) {
2122
this.user = user;
2223
this.attributes = null;
24+
this.newSocialSignUp = false;
2325
}
2426

2527
// 이건 OAuth2 로그인 시 사용하는 생성자
26-
public PrincipalDetails(AuthUser user, Map<String, Object> attributes) {
28+
public PrincipalDetails(AuthUser user, Map<String, Object> attributes, boolean newSocialSignUp) {
2729
this.user = user;
2830
this.attributes = attributes;
31+
this.newSocialSignUp = newSocialSignUp;
2932
}
3033

3134
@Override

src/main/java/checkmo/authentication/internal/security/oauth2/CustomOAuth2UserService.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,17 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2Authentic
4343
}
4444

4545
// 기존 회원인지 확인, 신규 회원이면 생성
46-
AuthUser user = authRepository.findByEmail(email)
47-
.orElseGet(() -> registerNewMember(attributes, registrationId));
48-
return new PrincipalDetails(user, oAuth2User.getAttributes());
46+
47+
AuthUser user = authRepository.findByEmail(email).orElse(null);
48+
49+
boolean newSocialSignUp = false;
50+
51+
if (user == null) {
52+
user = registerNewMember(attributes, registrationId);
53+
newSocialSignUp = true;
54+
}
55+
56+
return new PrincipalDetails(user, oAuth2User.getAttributes(), newSocialSignUp);
4957
}
5058

5159
private AuthUser registerNewMember(OAuth2Attributes attributes, String registrationId) {

src/main/java/checkmo/authentication/internal/security/oauth2/OAuth2AuthenticationSuccessHandler.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,20 @@ public void onAuthenticationSuccess(
3939
PrincipalDetails principalDetails = (PrincipalDetails) authentication.getPrincipal();
4040
AuthUser user = principalDetails.getUser();
4141

42-
String path = user.isProfileCompleted() ? "/" : "/signup/terms";
43-
44-
// 기본 리다이렉트 URI
45-
String targetUrl = UriComponentsBuilder.fromUriString(baseUri)
46-
.pathSegment(path)
47-
.build().toUriString();
42+
String targetUrl;
43+
44+
if (user.isProfileCompleted()) {
45+
targetUrl = UriComponentsBuilder.fromUriString(baseUri)
46+
.path("/")
47+
.build()
48+
.toUriString();
49+
} else {
50+
targetUrl = UriComponentsBuilder.fromUriString(baseUri)
51+
.path("/signup/terms")
52+
.queryParam("isSocial", principalDetails.isNewSocialSignUp())
53+
.build()
54+
.toUriString();
55+
}
4856

4957
// 성공 후 리다이렉트 URL 설정
5058
clearAuthenticationAttributes(request);

0 commit comments

Comments
 (0)