21.12.04 리팩토링중

ENUM 타입 추가
This commit is contained in:
jinia91
2021-12-04 17:38:08 +09:00
parent 6f75c1d9c9
commit c62a003d26
7 changed files with 45 additions and 10 deletions

View File

@@ -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;

View File

@@ -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));
}
}

View File

@@ -26,7 +26,7 @@ public class FacebookUserInfo implements Oauth2UserInfo {
@Override
public String getProvider() {
return "facebook";
return ProviderType.FACEBOOK.getValue();
}
@Override

View File

@@ -18,7 +18,7 @@ public class GoogleUserInfo implements Oauth2UserInfo{
@Override
public String getProvider() {
return "google";
return ProviderType.GOOGLE.getValue();
}
@Override

View File

@@ -26,7 +26,7 @@ public class KakaoUserInfo implements Oauth2UserInfo {
@Override
public String getProvider() {
return "kakao";
return ProviderType.KAKAO.getValue();
}
@Override

View File

@@ -26,7 +26,7 @@ public class NaverUserInfo implements Oauth2UserInfo {
@Override
public String getProvider() {
return "naver";
return ProviderType.NAVER.getValue();
}
@Override

View File

@@ -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;
}