Skip to content

Commit df17920

Browse files
committed
Fix: 소셜 로그인 시 providerId가 null일 경우 예외 처리 및 클라이언트 키에 따른 providerId 저장 로직 추가
1 parent 960e06e commit df17920

2 files changed

Lines changed: 7 additions & 0 deletions

File tree

src/main/java/com/fund/stockProject/auth/service/AuthService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ public String register(OAuth2RegisterRequest oAuth2RegisterRequest, String clien
127127
MultipartFile image = oAuth2RegisterRequest.getImage();
128128
String imageUrl = (image != null && !image.isEmpty()) ? s3Service.uploadUserImage(image, "users") : null;
129129
String providerId = resolveSocialProviderId(oAuth2RegisterRequest, provider, clientKey);
130+
if (providerId == null) {
131+
throw new IllegalArgumentException("Social registration context expired. Please retry social login.");
132+
}
130133
String email = resolveRegistrationEmail(oAuth2RegisterRequest, provider, providerId);
131134
Boolean marketingAgreement = oAuth2RegisterRequest.getMarketingAgreement() != null
132135
? oAuth2RegisterRequest.getMarketingAgreement()
@@ -166,6 +169,7 @@ private String resolveSocialProviderId(OAuth2RegisterRequest request, PROVIDER p
166169
if (provider == PROVIDER.APPLE) {
167170
return pendingProviderId
168171
.or(() -> appleLoginContextService.extractProviderIdFromFallbackEmail(email))
172+
.or(() -> appleLoginContextService.consumePendingProviderIdByClient(PROVIDER.APPLE, clientKey))
169173
.orElse(null);
170174
}
171175
return pendingProviderId.orElse(null);

src/main/java/com/fund/stockProject/auth/service/OAuth2Service.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ public LoginResponse appleLogin(String code, String state, String userJson, Stri
112112
Optional<User> userOptional = userRepository.findByEmail(email);
113113
if (userOptional.isEmpty()) {
114114
appleLoginContextService.savePendingProviderId(PROVIDER.APPLE, email, providerId);
115+
if (clientKey != null && !clientKey.isBlank()) {
116+
appleLoginContextService.savePendingProviderIdByClient(PROVIDER.APPLE, clientKey, providerId);
117+
}
115118
return new LoginResponse("NEED_REGISTER", email, null, null, null, null);
116119
}
117120

0 commit comments

Comments
 (0)