21.12.04 리팩토링중
ENUM 타입 추가
This commit is contained in:
@@ -6,6 +6,7 @@ import myblog.blog.category.dto.CategoryNormalDto;
|
||||
import myblog.blog.category.dto.CategoryForView;
|
||||
import myblog.blog.category.repository.CategoryRepository;
|
||||
import myblog.blog.category.repository.NaCategoryRepository;
|
||||
import myblog.blog.member.doamin.Role;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
||||
@@ -7,28 +7,45 @@ import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Component
|
||||
public class UserInfoFactory {
|
||||
|
||||
private final static Map<String, Function<OAuth2User, Oauth2UserInfo>> userInfoFactoryMap;
|
||||
private final static Map<ProviderType, Function<OAuth2User, Oauth2UserInfo>> userInfoFactoryMap;
|
||||
|
||||
static {
|
||||
userInfoFactoryMap = new HashMap<>();
|
||||
userInfoFactoryMap.put("google", GoogleUserInfo::new);
|
||||
userInfoFactoryMap.put("facebook", FacebookUserInfo::new);
|
||||
userInfoFactoryMap.put("kakao", KakaoUserInfo::new);
|
||||
userInfoFactoryMap.put("naver", NaverUserInfo::new);
|
||||
userInfoFactoryMap.put(ProviderType.GOOGLE, GoogleUserInfo::new);
|
||||
userInfoFactoryMap.put(ProviderType.FACEBOOK, FacebookUserInfo::new);
|
||||
userInfoFactoryMap.put(ProviderType.KAKAO, KakaoUserInfo::new);
|
||||
userInfoFactoryMap.put(ProviderType.NAVER, NaverUserInfo::new);
|
||||
}
|
||||
|
||||
private static final Map<String, ProviderType> stringToEnum;
|
||||
|
||||
static {
|
||||
stringToEnum =
|
||||
Stream.of(ProviderType.values())
|
||||
.collect(Collectors.toMap(ProviderType::getValue, providerType->providerType));
|
||||
}
|
||||
|
||||
public Oauth2UserInfo makeOauth2UserinfoOf(OAuth2UserRequest oAuth2UserRequest, OAuth2User oAuth2User) {
|
||||
|
||||
Optional<ProviderType> providerTypeOptional = fromString(oAuth2UserRequest.getClientRegistration().getRegistrationId());
|
||||
|
||||
return userInfoFactoryMap
|
||||
.get(oAuth2UserRequest.getClientRegistration().getRegistrationId())
|
||||
.get(providerTypeOptional.orElseThrow(() -> new IllegalArgumentException("지원하지 않는 소셜 로그인 API 제공자입니다.")))
|
||||
.apply(oAuth2User);
|
||||
|
||||
}
|
||||
|
||||
private Optional<ProviderType> fromString(String provider){
|
||||
return Optional.ofNullable(stringToEnum.get(provider));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ public class FacebookUserInfo implements Oauth2UserInfo {
|
||||
|
||||
@Override
|
||||
public String getProvider() {
|
||||
return "facebook";
|
||||
return ProviderType.FACEBOOK.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -18,7 +18,7 @@ public class GoogleUserInfo implements Oauth2UserInfo{
|
||||
|
||||
@Override
|
||||
public String getProvider() {
|
||||
return "google";
|
||||
return ProviderType.GOOGLE.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,7 +26,7 @@ public class KakaoUserInfo implements Oauth2UserInfo {
|
||||
|
||||
@Override
|
||||
public String getProvider() {
|
||||
return "kakao";
|
||||
return ProviderType.KAKAO.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,7 +26,7 @@ public class NaverUserInfo implements Oauth2UserInfo {
|
||||
|
||||
@Override
|
||||
public String getProvider() {
|
||||
return "naver";
|
||||
return ProviderType.NAVER.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package myblog.blog.member.auth.userinfo;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Getter
|
||||
public enum ProviderType {
|
||||
|
||||
FACEBOOK("facebook"),
|
||||
GOOGLE("google"),
|
||||
KAKAO("kakao"),
|
||||
NAVER("naver");
|
||||
|
||||
private final String value;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user