From 65f20724311f6e497353791cd33bc66825235d98 Mon Sep 17 00:00:00 2001 From: Hyoseop Song Date: Mon, 30 Sep 2024 16:19:14 +0900 Subject: [PATCH] =?UTF-8?q?:recycle:=20refactor:=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=20=EC=86=8C=EC=85=9C=20=EC=97=B0=EA=B2=B0=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=EB=8A=94=20User=20=EB=8F=84=EB=A9=94=EC=9D=B8?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EA=B4=80=EB=A6=AC=ED=95=9C=EB=8B=A4=20(#5?= =?UTF-8?q?2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../social/strategy/KakaoAuthStrategy.java | 38 +++++++------------ .../slvtwn/khu/toyouserver/domain/User.java | 11 ++++-- .../toyouserver/domain/UserSocialAccount.java | 36 ------------------ .../persistance/UserRepository.java | 3 +- .../UserSocialAccountRepository.java | 9 ----- 5 files changed, 24 insertions(+), 73 deletions(-) delete mode 100644 src/main/java/slvtwn/khu/toyouserver/domain/UserSocialAccount.java delete mode 100644 src/main/java/slvtwn/khu/toyouserver/persistance/UserSocialAccountRepository.java diff --git a/src/main/java/slvtwn/khu/toyouserver/common/authentication/social/strategy/KakaoAuthStrategy.java b/src/main/java/slvtwn/khu/toyouserver/common/authentication/social/strategy/KakaoAuthStrategy.java index c3fc0f5..5e7a0d2 100644 --- a/src/main/java/slvtwn/khu/toyouserver/common/authentication/social/strategy/KakaoAuthStrategy.java +++ b/src/main/java/slvtwn/khu/toyouserver/common/authentication/social/strategy/KakaoAuthStrategy.java @@ -2,7 +2,6 @@ import static slvtwn.khu.toyouserver.domain.SocialAuthProvider.KAKAO; -import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -11,20 +10,16 @@ import slvtwn.khu.toyouserver.common.authentication.jwt.Token; import slvtwn.khu.toyouserver.common.feign.auth.kakao.KakaoAuthApiClient; import slvtwn.khu.toyouserver.common.feign.auth.kakao.KakaoResourceApiClient; -import slvtwn.khu.toyouserver.common.feign.auth.kakao.web.KakaoTokenResponse; import slvtwn.khu.toyouserver.common.feign.auth.kakao.web.KakaoUserResponse; import slvtwn.khu.toyouserver.domain.User; -import slvtwn.khu.toyouserver.domain.UserSocialAccount; import slvtwn.khu.toyouserver.dto.SocialAuthRequest; import slvtwn.khu.toyouserver.dto.SocialAuthResponse; import slvtwn.khu.toyouserver.persistance.UserRepository; -import slvtwn.khu.toyouserver.persistance.UserSocialAccountRepository; @Service @RequiredArgsConstructor public class KakaoAuthStrategy implements SocialAuthStrategy { - private final UserSocialAccountRepository userSocialAccountRepository; @Value("${oauth.kakao.client-id}") private String kakaoClientId; @Value("${oauth.kakao.redirect-uri}") @@ -44,14 +39,17 @@ public class KakaoAuthStrategy implements SocialAuthStrategy { @Override @Transactional public SocialAuthResponse login(SocialAuthRequest request) { - KakaoTokenResponse tokenResponse = kakaoAuthApiClient.getOAuth2AccessToken( - kakaoGrantType, - kakaoClientId, - kakaoRedirectUri, - request.authorizationCode() - ); +// KakaoTokenResponse tokenResponse = kakaoAuthApiClient.getOAuth2AccessToken( +// kakaoGrantType, +// kakaoClientId, +// kakaoRedirectUri, +// request.authorizationCode() +// ); +// KakaoUserResponse userResponse = kakaoResourceApiClient.getUserInformation( +// "Bearer " + tokenResponse.accessToken()); + KakaoUserResponse userResponse = kakaoResourceApiClient.getUserInformation( - "Bearer " + tokenResponse.accessToken()); + "Bearer " + "5KPI3VXXHURq8oW-Tf4QakyEigvBgSNoAAAAAQo8JCAAAAGSQcoJl-AsyCcGfplL"); User user = findOrCreateUser(userResponse); Token token = jwtProvider.issueTokens(user.getId()); return SocialAuthResponse.of(user.getId(), user.getName(), KAKAO, token); @@ -63,26 +61,18 @@ public boolean support(String provider) { } private User findOrCreateUser(KakaoUserResponse userResponse) { - Optional account = userSocialAccountRepository.findByProviderSerial( - userResponse.id()); - if (account.isPresent()) { - UserSocialAccount verifiedSocialAccount = account.get(); - return userRepository.findById(verifiedSocialAccount.getUserId()).orElseThrow( - () -> new IllegalStateException("등록된 카카오 계정에 해당하는 유저가 없습니다.")); - } else { - return registerUser(userResponse); - } + return userRepository.findByProviderSerial(userResponse.id()) + .orElseGet(() -> registerUser(userResponse)); } private User registerUser(KakaoUserResponse userResponse) { User user = User.create( userResponse.kakaoAccount().profile().nickname(), userResponse.kakaoAccount().profile().profileImageUrl(), - KAKAO + KAKAO, + userResponse.id() ); userRepository.save(user); - UserSocialAccount newAccount = UserSocialAccount.createAccountByKakao(user.getId(), userResponse.id()); - userSocialAccountRepository.save(newAccount); return user; } } \ No newline at end of file diff --git a/src/main/java/slvtwn/khu/toyouserver/domain/User.java b/src/main/java/slvtwn/khu/toyouserver/domain/User.java index 2daa63c..1c3683c 100644 --- a/src/main/java/slvtwn/khu/toyouserver/domain/User.java +++ b/src/main/java/slvtwn/khu/toyouserver/domain/User.java @@ -9,6 +9,7 @@ import jakarta.persistence.Table; import java.time.LocalDate; import lombok.AccessLevel; +import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import slvtwn.khu.toyouserver.common.entity.BaseTimeEntity; @@ -16,6 +17,7 @@ @Entity @Table(name = "users") @NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor(access = AccessLevel.PRIVATE) @Getter public class User extends BaseTimeEntity { @@ -34,15 +36,18 @@ public class User extends BaseTimeEntity { @Enumerated(EnumType.STRING) private SocialAuthProvider provider; - public User(String name, LocalDate birthday, String introduction, String profilePicture, SocialAuthProvider provider) { + private String providerSerial; + + public User(String name, LocalDate birthday, String introduction, String profilePicture, + SocialAuthProvider provider) { this.name = name; this.birthday = birthday; this.introduction = introduction; this.profilePicture = profilePicture; } - public static User create(String name, String profilePicture, SocialAuthProvider provider) { - return new User(name, null, null, profilePicture, provider); + public static User create(String name, String profilePicture, SocialAuthProvider provider, String providerSerial) { + return new User(null, name, null, null, profilePicture, provider, providerSerial); } public User updateInfo(String name, LocalDate birthday, String introduction, String profilePicture) { diff --git a/src/main/java/slvtwn/khu/toyouserver/domain/UserSocialAccount.java b/src/main/java/slvtwn/khu/toyouserver/domain/UserSocialAccount.java deleted file mode 100644 index 66e94b3..0000000 --- a/src/main/java/slvtwn/khu/toyouserver/domain/UserSocialAccount.java +++ /dev/null @@ -1,36 +0,0 @@ -package slvtwn.khu.toyouserver.domain; - - -import static jakarta.persistence.GenerationType.IDENTITY; - -import jakarta.persistence.Entity; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Entity -@Table(name = "user_social_accounts") -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor(access = AccessLevel.PRIVATE) -@Getter -public class UserSocialAccount { - - @Id - @GeneratedValue(strategy = IDENTITY) - private Long id; - - @Enumerated(EnumType.STRING) - private SocialAuthProvider provider; - private String providerSerial; - private Long userId; - - public static UserSocialAccount createAccountByKakao(Long userId, String providerSerial) { - return new UserSocialAccount(null, SocialAuthProvider.KAKAO, providerSerial, userId); - } -} diff --git a/src/main/java/slvtwn/khu/toyouserver/persistance/UserRepository.java b/src/main/java/slvtwn/khu/toyouserver/persistance/UserRepository.java index 75d2159..576c417 100644 --- a/src/main/java/slvtwn/khu/toyouserver/persistance/UserRepository.java +++ b/src/main/java/slvtwn/khu/toyouserver/persistance/UserRepository.java @@ -1,8 +1,9 @@ package slvtwn.khu.toyouserver.persistance; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import slvtwn.khu.toyouserver.domain.User; public interface UserRepository extends JpaRepository { - + Optional findByProviderSerial(String providerSerial); } diff --git a/src/main/java/slvtwn/khu/toyouserver/persistance/UserSocialAccountRepository.java b/src/main/java/slvtwn/khu/toyouserver/persistance/UserSocialAccountRepository.java deleted file mode 100644 index a5c419b..0000000 --- a/src/main/java/slvtwn/khu/toyouserver/persistance/UserSocialAccountRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package slvtwn.khu.toyouserver.persistance; - -import java.util.Optional; -import org.springframework.data.jpa.repository.JpaRepository; -import slvtwn.khu.toyouserver.domain.UserSocialAccount; - -public interface UserSocialAccountRepository extends JpaRepository { - Optional findByProviderSerial(String providerSerial); -}