Skip to content

Commit fc9a7f6

Browse files
committed
feat(oauth): CustomOAuth2User 사용으로 로직 추가, 변경
- 제공자 정보를 제공 받음으로 올바른 분기 처리. - OAuth2User 사용처에서 CustomOAuth2User 사용하도록 변경.
1 parent 43ca606 commit fc9a7f6

File tree

4 files changed

+52
-8
lines changed

4 files changed

+52
-8
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.somemore.global.auth.oauth.converter;
22

33
import com.somemore.global.auth.oauth.domain.CommonOAuthInfo;
4-
import org.springframework.security.oauth2.core.user.OAuth2User;
4+
import com.somemore.global.auth.oauth.domain.CustomOAuth2User;
55

66
public interface OAuthResponseConverter {
7-
CommonOAuthInfo convert(OAuth2User oAuth2User);
7+
CommonOAuthInfo convert(CustomOAuth2User oAuth2User);
88
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.somemore.global.auth.oauth.converter;
2+
3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.somemore.global.auth.oauth.domain.CommonOAuthInfo;
5+
import com.somemore.global.auth.oauth.domain.CustomOAuth2User;
6+
import com.somemore.global.auth.oauth.domain.OAuthProvider;
7+
import com.somemore.global.auth.oauth.dto.KakaoUserProfileResponseDto;
8+
import com.somemore.global.auth.oauth.dto.NaverUserProfileResponseDto;
9+
import lombok.RequiredArgsConstructor;
10+
import org.springframework.stereotype.Component;
11+
12+
@Component
13+
@RequiredArgsConstructor
14+
public class OAuthResponseConverterImpl implements OAuthResponseConverter {
15+
16+
private final ObjectMapper objectMapper;
17+
18+
@Override
19+
public CommonOAuthInfo convert(CustomOAuth2User oAuth2User) {
20+
OAuthProvider provider = oAuth2User.getProvider();
21+
switch (provider) {
22+
case KAKAO:
23+
KakaoUserProfileResponseDto kakaoUserProfile = objectMapper.convertValue(
24+
oAuth2User.getAttributes(),
25+
KakaoUserProfileResponseDto.class
26+
);
27+
return CommonOAuthInfo.of(
28+
OAuthProvider.KAKAO,
29+
kakaoUserProfile.id()
30+
);
31+
case NAVER:
32+
NaverUserProfileResponseDto naverUserProfile = objectMapper.convertValue(
33+
oAuth2User.getAttributes(),
34+
NaverUserProfileResponseDto.class
35+
);
36+
return CommonOAuthInfo.of(
37+
OAuthProvider.NAVER,
38+
naverUserProfile.response().id()
39+
);
40+
default:
41+
throw new IllegalArgumentException("지원하지 않는 OAuth Provider입니다.");
42+
}
43+
}
44+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.somemore.global.auth.oauth.processor;
22

3-
import org.springframework.security.oauth2.core.user.OAuth2User;
3+
import com.somemore.global.auth.oauth.domain.CustomOAuth2User;
44

55
import java.util.UUID;
66

77
public interface OAuthUserProcessor {
8-
UUID fetchUserIdByOAuthUser(OAuth2User oauthUser);
8+
UUID fetchUserIdByOAuthUser(CustomOAuth2User oauthUser);
99
}

src/main/java/com/somemore/global/auth/oauth/processor/OAuthUserProcessorImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package com.somemore.global.auth.oauth.processor;
22

3-
import com.somemore.user.domain.UserRole;
43
import com.somemore.global.auth.oauth.checker.OAuthInfoChecker;
5-
import com.somemore.global.auth.oauth.domain.CommonOAuthInfo;
64
import com.somemore.global.auth.oauth.converter.OAuthResponseConverter;
5+
import com.somemore.global.auth.oauth.domain.CommonOAuthInfo;
6+
import com.somemore.global.auth.oauth.domain.CustomOAuth2User;
77
import com.somemore.global.auth.oauth.registrar.OAuthInfoRegistrar;
88
import com.somemore.global.auth.oauth.service.OAuthInfoQueryService;
99
import com.somemore.user.domain.User;
10+
import com.somemore.user.domain.UserRole;
1011
import com.somemore.user.usecase.RegisterUserUseCase;
1112
import lombok.RequiredArgsConstructor;
1213
import lombok.extern.slf4j.Slf4j;
13-
import org.springframework.security.oauth2.core.user.OAuth2User;
1414
import org.springframework.stereotype.Service;
1515
import org.springframework.transaction.annotation.Transactional;
1616

@@ -29,7 +29,7 @@ public class OAuthUserProcessorImpl implements OAuthUserProcessor {
2929
private final OAuthInfoQueryService oAuthInfoQueryService;
3030

3131
@Override
32-
public UUID fetchUserIdByOAuthUser(OAuth2User oauthUser) {
32+
public UUID fetchUserIdByOAuthUser(CustomOAuth2User oauthUser) {
3333
CommonOAuthInfo oauthInfo = oauthResponseConverter.convert(oauthUser);
3434
return findUserIdByOAuthInfo(oauthInfo);
3535
}

0 commit comments

Comments
 (0)