From c836aa9afe64b05519c1d9bd8b8f978d9b4a413d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=9E=AC=EC=A4=91?= <126754298+m-a-king@users.noreply.github.com> Date: Thu, 23 Jan 2025 16:19:22 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat(auth):=20OAuth=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - OAuth 사용자를 위한 회원가입 메소드(signUpOAuthUser) 추가 - 기존 로컬 사용자 회원가입 메소드 이름을 signUpLocalUser로 변경 - OAuth 등록자(OAuthInfoRegistrar) 및 관련 로직 연동 --- .../global/auth/sign/up/SignUpController.java | 2 +- .../global/auth/sign/up/SignUpService.java | 15 +++++++++++++-- .../global/auth/sign/up/SignUpUseCase.java | 6 +++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/somemore/global/auth/sign/up/SignUpController.java b/src/main/java/com/somemore/global/auth/sign/up/SignUpController.java index 0b278ba2..f5a25f09 100644 --- a/src/main/java/com/somemore/global/auth/sign/up/SignUpController.java +++ b/src/main/java/com/somemore/global/auth/sign/up/SignUpController.java @@ -20,7 +20,7 @@ public class SignUpController { public ApiResponse signUp( @RequestBody SignUpRequestDto signUpRequestDto ) { - signUpUseCase.signUp(signUpRequestDto); + signUpUseCase.signUpLocalUser(signUpRequestDto); return ApiResponse.ok("회원가입 되었습니다"); } diff --git a/src/main/java/com/somemore/global/auth/sign/up/SignUpService.java b/src/main/java/com/somemore/global/auth/sign/up/SignUpService.java index 89c27684..c32f6695 100644 --- a/src/main/java/com/somemore/global/auth/sign/up/SignUpService.java +++ b/src/main/java/com/somemore/global/auth/sign/up/SignUpService.java @@ -1,6 +1,8 @@ package com.somemore.global.auth.sign.up; import com.somemore.center.usecase.NEWRegisterCenterUseCase; +import com.somemore.global.auth.oauth.domain.CommonOAuthInfo; +import com.somemore.global.auth.oauth.registrar.OAuthInfoRegistrar; import com.somemore.user.domain.User; import com.somemore.user.domain.UserRole; import com.somemore.user.dto.UserAuthInfo; @@ -18,17 +20,26 @@ public class SignUpService implements SignUpUseCase { private final RegisterUserService registerUserUseCase; + private final OAuthInfoRegistrar oauthInfoRegistrar; private final NEWRegisterVolunteerUseCase NEWRegisterVolunteerUseCase; private final NEWRegisterCenterUseCase NEWRegisterCenterUseCase; @Override - public void signUp(SignUpRequestDto signUpRequestDto) { + public void signUpLocalUser(SignUpRequestDto signUpRequestDto) { User user = registerUserUseCase.registerLocalUser( UserAuthInfo.of(signUpRequestDto.accountId(), signUpRequestDto.accountPassword()), UserRole.from(signUpRequestDto.userRole())); // TODO 회원가입 이벤트 발행으로 변경 (봉사자 혹은 기관 등록) - // 임시 로직 + registerVolunteerOrCenter(user); + } + + @Override + public void signUpOAuthUser(CommonOAuthInfo oAuthInfo) { + User user = registerUserUseCase.registerOAuthUser( + oAuthInfo, UserRole.getOAuthUserDefaultRole()); + + oauthInfoRegistrar.register(user, oAuthInfo); registerVolunteerOrCenter(user); } diff --git a/src/main/java/com/somemore/global/auth/sign/up/SignUpUseCase.java b/src/main/java/com/somemore/global/auth/sign/up/SignUpUseCase.java index 44e71b39..8a3408fd 100644 --- a/src/main/java/com/somemore/global/auth/sign/up/SignUpUseCase.java +++ b/src/main/java/com/somemore/global/auth/sign/up/SignUpUseCase.java @@ -1,6 +1,10 @@ package com.somemore.global.auth.sign.up; +import com.somemore.global.auth.oauth.domain.CommonOAuthInfo; + public interface SignUpUseCase { - void signUp(SignUpRequestDto signUpRequestDto); + void signUpLocalUser(SignUpRequestDto signUpRequestDto); + + void signUpOAuthUser(CommonOAuthInfo oAuthInfo); } From f2286759eba5517aa8388696726117b6afadd4fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=9E=AC=EC=A4=91?= <126754298+m-a-king@users.noreply.github.com> Date: Thu, 23 Jan 2025 16:19:44 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor(auth):=20OAuth=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EB=93=B1=EB=A1=9D=20=EB=A1=9C=EC=A7=81=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `registerOAuthUser` 메서드 제거 및 `SignUpUseCase`로 대체 - `RegisterUserUseCase`와 `OAuthInfoRegistrar` 종속성 제거 - OAuth 유저 등록과 관련된 책임을 `SignUpUseCase`로 위임 --- .../processor/OAuthUserProcessorImpl.java | 29 ++----------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/somemore/global/auth/oauth/processor/OAuthUserProcessorImpl.java b/src/main/java/com/somemore/global/auth/oauth/processor/OAuthUserProcessorImpl.java index 8bbd19eb..cb2618bf 100644 --- a/src/main/java/com/somemore/global/auth/oauth/processor/OAuthUserProcessorImpl.java +++ b/src/main/java/com/somemore/global/auth/oauth/processor/OAuthUserProcessorImpl.java @@ -4,29 +4,23 @@ import com.somemore.global.auth.oauth.converter.OAuthResponseConverter; import com.somemore.global.auth.oauth.domain.CommonOAuthInfo; import com.somemore.global.auth.oauth.domain.CustomOAuth2User; -import com.somemore.global.auth.oauth.registrar.OAuthInfoRegistrar; import com.somemore.global.auth.oauth.service.OAuthInfoQueryService; -import com.somemore.user.domain.User; -import com.somemore.user.domain.UserRole; -import com.somemore.user.usecase.RegisterUserUseCase; +import com.somemore.global.auth.sign.up.SignUpUseCase; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.util.UUID; @Slf4j @Service @RequiredArgsConstructor -@Transactional public class OAuthUserProcessorImpl implements OAuthUserProcessor { private final OAuthResponseConverter oauthResponseConverter; private final OAuthInfoChecker oauthInfoChecker; - private final OAuthInfoRegistrar oauthInfoRegistrar; - private final RegisterUserUseCase registerUserUseCase; private final OAuthInfoQueryService oAuthInfoQueryService; + private final SignUpUseCase signUpUseCase; @Override public UUID fetchUserIdByOAuthUser(CustomOAuth2User oauthUser) { @@ -36,29 +30,12 @@ public UUID fetchUserIdByOAuthUser(CustomOAuth2User oauthUser) { private UUID findUserIdByOAuthInfo(CommonOAuthInfo oauthInfo) { if (isNewUser(oauthInfo)) { - User user = registerOAuthUser(oauthInfo); - return user.getId(); + signUpUseCase.signUpOAuthUser(oauthInfo); } return oAuthInfoQueryService.getUserIdByCommonOAuthInfo(oauthInfo); } - private User registerOAuthUser(CommonOAuthInfo oauthInfo) { - User user = registerUser(oauthInfo); - registerOAuthInfo(user, oauthInfo); - // TODO 봉사자 등록 이벤트 발행 - - return user; - } - private boolean isNewUser(CommonOAuthInfo oauthInfo) { return !oauthInfoChecker.doesUserExist(oauthInfo.provider(), oauthInfo.oauthId()); } - - private User registerUser(CommonOAuthInfo oauthInfo) { - return registerUserUseCase.registerOAuthUser(oauthInfo, UserRole.getOAuthUserDefaultRole()); - } - - private void registerOAuthInfo(User user, CommonOAuthInfo oauthInfo) { - oauthInfoRegistrar.register(user, oauthInfo); - } }