From 21213072c70805b6d0b4ca1da61ddb64c4e15855 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: Mon, 30 Dec 2024 14:51:00 +0900 Subject: [PATCH 01/19] =?UTF-8?q?feat(oauth):=20oauth=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20=EB=93=B1=EB=A1=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/auth/oauth/registrar/OAuthInfoRegistrarImpl.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/somemore/global/auth/oauth/registrar/OAuthInfoRegistrarImpl.java b/src/main/java/com/somemore/global/auth/oauth/registrar/OAuthInfoRegistrarImpl.java index 34a35003..2052b15b 100644 --- a/src/main/java/com/somemore/global/auth/oauth/registrar/OAuthInfoRegistrarImpl.java +++ b/src/main/java/com/somemore/global/auth/oauth/registrar/OAuthInfoRegistrarImpl.java @@ -22,6 +22,4 @@ public OAuthInfo register(User user, CommonOAuthInfo commonOAuthInfo) { OAuthInfo oAuthInfo = OAuthInfo.create(user, commonOAuthInfo); return oauthInfoRepository.save(oAuthInfo); } - - } From bf43acc7194cf3855b1fc57482ca16bf5d304eb2 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: Mon, 30 Dec 2024 15:49:49 +0900 Subject: [PATCH 02/19] =?UTF-8?q?refactor:=20=ED=8C=A8=ED=82=A4=EC=A7=80?= =?UTF-8?q?=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/somemore/develop/controller/TokenGenerateMachine.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/java/com/somemore/develop/controller/TokenGenerateMachine.java diff --git a/src/main/java/com/somemore/develop/controller/TokenGenerateMachine.java b/src/main/java/com/somemore/develop/controller/TokenGenerateMachine.java new file mode 100644 index 00000000..e69de29b From cdf7441ded2ad7c8a28324165072017671641d94 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: Tue, 31 Dec 2024 21:49:19 +0900 Subject: [PATCH 03/19] =?UTF-8?q?refactor(user):=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=EC=9D=B8=EC=A6=9D=20=EC=A0=95=EB=B3=B4=20dto=20=EB=84=A4?= =?UTF-8?q?=EC=9D=B4=EB=B0=8D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...erAuthInfo.java => UserAuthInfoRequestDto.java} | 0 .../somemore/user/service/RegisterUserService.java | 14 +++++++------- .../somemore/user/usecase/RegisterUserUseCase.java | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) rename src/main/java/com/somemore/user/dto/{UserAuthInfo.java => UserAuthInfoRequestDto.java} (100%) diff --git a/src/main/java/com/somemore/user/dto/UserAuthInfo.java b/src/main/java/com/somemore/user/dto/UserAuthInfoRequestDto.java similarity index 100% rename from src/main/java/com/somemore/user/dto/UserAuthInfo.java rename to src/main/java/com/somemore/user/dto/UserAuthInfoRequestDto.java diff --git a/src/main/java/com/somemore/user/service/RegisterUserService.java b/src/main/java/com/somemore/user/service/RegisterUserService.java index 18b98819..ced60f65 100644 --- a/src/main/java/com/somemore/user/service/RegisterUserService.java +++ b/src/main/java/com/somemore/user/service/RegisterUserService.java @@ -5,7 +5,7 @@ import com.somemore.user.domain.User; import com.somemore.user.domain.UserCommonAttribute; import com.somemore.user.domain.UserSetting; -import com.somemore.user.dto.UserAuthInfo; +import com.somemore.user.dto.UserAuthInfoRequestDto; import com.somemore.user.repository.user.UserRepository; import com.somemore.user.repository.usercommonattribute.UserCommonAttributeRepository; import com.somemore.user.repository.usersetting.UserSettingRepository; @@ -29,17 +29,17 @@ public class RegisterUserService implements RegisterUserUseCase { @Override public User registerOAuthUser(CommonOAuthInfo commonOAuthInfo, UserRole role) { - UserAuthInfo userAuthInfo = UserAuthInfo.createForOAuth(commonOAuthInfo.provider()); - return createAndRegisterUser(role, userAuthInfo); + UserAuthInfoRequestDto userAuthInfoRequestDto = UserAuthInfoRequestDto.createForOAuth(commonOAuthInfo.provider()); + return createAndRegisterUser(role, userAuthInfoRequestDto); } @Override - public User registerLocalUser(UserAuthInfo userAuthInfo, UserRole role) { - return createAndRegisterUser(role, userAuthInfo); + public User registerLocalUser(UserAuthInfoRequestDto userAuthInfoRequestDto, UserRole role) { + return createAndRegisterUser(role, userAuthInfoRequestDto); } - private User createAndRegisterUser(UserRole role, UserAuthInfo userAuthInfo) { - User user = User.from(userAuthInfo, role); + private User createAndRegisterUser(UserRole role, UserAuthInfoRequestDto userAuthInfoRequestDto) { + User user = User.from(userAuthInfoRequestDto, role); userRepository.save(user); UUID userId = user.getId(); diff --git a/src/main/java/com/somemore/user/usecase/RegisterUserUseCase.java b/src/main/java/com/somemore/user/usecase/RegisterUserUseCase.java index c34994ad..f242c377 100644 --- a/src/main/java/com/somemore/user/usecase/RegisterUserUseCase.java +++ b/src/main/java/com/somemore/user/usecase/RegisterUserUseCase.java @@ -3,9 +3,9 @@ import com.somemore.user.domain.UserRole; import com.somemore.global.auth.oauth.domain.CommonOAuthInfo; import com.somemore.user.domain.User; -import com.somemore.user.dto.UserAuthInfo; +import com.somemore.user.dto.UserAuthInfoRequestDto; public interface RegisterUserUseCase { User registerOAuthUser(CommonOAuthInfo commonOAuthInfo, UserRole role); - User registerLocalUser(UserAuthInfo userAuthInfo, UserRole role); + User registerLocalUser(UserAuthInfoRequestDto userAuthInfoRequestDto, UserRole role); } From fc18102860df4b8eba87aaa1969631001a8d5c6f 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: Wed, 1 Jan 2025 18:41:03 +0900 Subject: [PATCH 04/19] =?UTF-8?q?refactor(user):=20userAuthInfo=20?= =?UTF-8?q?=EB=84=A4=EC=9D=B4=EB=B0=8D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RequestDto로 두는 것보다 VO의 개념으로 두는 것이 더 올바르다고 판단. --- ...erAuthInfoRequestDto.java => UserAuthInfo.java} | 0 .../somemore/user/service/RegisterUserService.java | 14 +++++++------- .../somemore/user/usecase/RegisterUserUseCase.java | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) rename src/main/java/com/somemore/user/dto/{UserAuthInfoRequestDto.java => UserAuthInfo.java} (100%) diff --git a/src/main/java/com/somemore/user/dto/UserAuthInfoRequestDto.java b/src/main/java/com/somemore/user/dto/UserAuthInfo.java similarity index 100% rename from src/main/java/com/somemore/user/dto/UserAuthInfoRequestDto.java rename to src/main/java/com/somemore/user/dto/UserAuthInfo.java diff --git a/src/main/java/com/somemore/user/service/RegisterUserService.java b/src/main/java/com/somemore/user/service/RegisterUserService.java index ced60f65..18b98819 100644 --- a/src/main/java/com/somemore/user/service/RegisterUserService.java +++ b/src/main/java/com/somemore/user/service/RegisterUserService.java @@ -5,7 +5,7 @@ import com.somemore.user.domain.User; import com.somemore.user.domain.UserCommonAttribute; import com.somemore.user.domain.UserSetting; -import com.somemore.user.dto.UserAuthInfoRequestDto; +import com.somemore.user.dto.UserAuthInfo; import com.somemore.user.repository.user.UserRepository; import com.somemore.user.repository.usercommonattribute.UserCommonAttributeRepository; import com.somemore.user.repository.usersetting.UserSettingRepository; @@ -29,17 +29,17 @@ public class RegisterUserService implements RegisterUserUseCase { @Override public User registerOAuthUser(CommonOAuthInfo commonOAuthInfo, UserRole role) { - UserAuthInfoRequestDto userAuthInfoRequestDto = UserAuthInfoRequestDto.createForOAuth(commonOAuthInfo.provider()); - return createAndRegisterUser(role, userAuthInfoRequestDto); + UserAuthInfo userAuthInfo = UserAuthInfo.createForOAuth(commonOAuthInfo.provider()); + return createAndRegisterUser(role, userAuthInfo); } @Override - public User registerLocalUser(UserAuthInfoRequestDto userAuthInfoRequestDto, UserRole role) { - return createAndRegisterUser(role, userAuthInfoRequestDto); + public User registerLocalUser(UserAuthInfo userAuthInfo, UserRole role) { + return createAndRegisterUser(role, userAuthInfo); } - private User createAndRegisterUser(UserRole role, UserAuthInfoRequestDto userAuthInfoRequestDto) { - User user = User.from(userAuthInfoRequestDto, role); + private User createAndRegisterUser(UserRole role, UserAuthInfo userAuthInfo) { + User user = User.from(userAuthInfo, role); userRepository.save(user); UUID userId = user.getId(); diff --git a/src/main/java/com/somemore/user/usecase/RegisterUserUseCase.java b/src/main/java/com/somemore/user/usecase/RegisterUserUseCase.java index f242c377..c34994ad 100644 --- a/src/main/java/com/somemore/user/usecase/RegisterUserUseCase.java +++ b/src/main/java/com/somemore/user/usecase/RegisterUserUseCase.java @@ -3,9 +3,9 @@ import com.somemore.user.domain.UserRole; import com.somemore.global.auth.oauth.domain.CommonOAuthInfo; import com.somemore.user.domain.User; -import com.somemore.user.dto.UserAuthInfoRequestDto; +import com.somemore.user.dto.UserAuthInfo; public interface RegisterUserUseCase { User registerOAuthUser(CommonOAuthInfo commonOAuthInfo, UserRole role); - User registerLocalUser(UserAuthInfoRequestDto userAuthInfoRequestDto, UserRole role); + User registerLocalUser(UserAuthInfo userAuthInfo, UserRole role); } From 918a5aa8c1b65bc17fce51320e5ae07a8e01c56a 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, 2 Jan 2025 06:17:17 +0900 Subject: [PATCH 05/19] =?UTF-8?q?test(user):=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=EA=B3=B5=ED=86=B5=20=EC=86=8D=EC=84=B1=20=EC=A0=80=EC=9E=A5=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserCommonAttributeRepositoryImplTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/somemore/user/repository/usercommonattribute/UserCommonAttributeRepositoryImplTest.java b/src/test/java/com/somemore/user/repository/usercommonattribute/UserCommonAttributeRepositoryImplTest.java index 8bc183b1..d286fcab 100644 --- a/src/test/java/com/somemore/user/repository/usercommonattribute/UserCommonAttributeRepositoryImplTest.java +++ b/src/test/java/com/somemore/user/repository/usercommonattribute/UserCommonAttributeRepositoryImplTest.java @@ -37,6 +37,5 @@ void saveUserCommonAttribute() { assertThat(savedUserCommonAttribute.getUserId()).isEqualTo(userId); assertThat(savedUserCommonAttribute.getImgUrl()).isEqualTo(ImageUploadService.DEFAULT_IMAGE_URL); assertThat(savedUserCommonAttribute.isCustomized()).isFalse(); - } } From 7d93851a878944475db01e1604967e9ad68cf090 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: Sun, 12 Jan 2025 23:37:10 +0900 Subject: [PATCH 06/19] =?UTF-8?q?feat(kakao):=20=EC=B9=B4=EC=B9=B4?= =?UTF-8?q?=EC=98=A4=20OAuth=20=EC=84=A4=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 172ca763..dac88647 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -55,6 +55,13 @@ spring: redirect-uri: ${NAVER_REDIRECT_URL} authorization-grant-type: authorization_code scope: ${NAVER_SCOPE} + kakao: + client-id: ${KAKAO_CLIENT_ID} + clientSecret: ${KAKAO_CLIENT_SECRET} + redirect-uri: ${KAKAO_REDIRECT_URL} + client-authentication-method: client_secret_post + authorization-grant-type: authorization_code + scope: ${KAKAO_SCOPE} provider: naver: @@ -62,6 +69,11 @@ spring: token-uri: https://nid.naver.com/oauth2.0/token user-info-uri: https://openapi.naver.com/v1/nid/me user-name-attribute: response # 네이버 API가 사용자 정보를 "response" 객체 안에 넣어 반환 + kakao: + authorization_uri: https://kauth.kakao.com/oauth/authorize + token_uri: https://kauth.kakao.com/oauth/token + user-info-uri: https://kapi.kakao.com/v2/user/me + user_name_attribute: id web: locale: ko_KR @@ -72,7 +84,6 @@ spring: max-file-size: 8MB max-request-size: 8MB - schedules: cron: updateCommunityBoardDocuments: "0 0 0 * * *" From 40fe2fe5aa9e23aca3f2f52807c266e8fcc0f3a9 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: Sun, 12 Jan 2025 23:37:40 +0900 Subject: [PATCH 07/19] =?UTF-8?q?feat(kakao):=20=EC=B9=B4=EC=B9=B4?= =?UTF-8?q?=EC=98=A4=20OAuth=20=EC=9D=91=EB=8B=B5=20DTO=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/oauth/dto/KakaoUserProfileResponseDto.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/main/java/com/somemore/global/auth/oauth/dto/KakaoUserProfileResponseDto.java diff --git a/src/main/java/com/somemore/global/auth/oauth/dto/KakaoUserProfileResponseDto.java b/src/main/java/com/somemore/global/auth/oauth/dto/KakaoUserProfileResponseDto.java new file mode 100644 index 00000000..9b6606ef --- /dev/null +++ b/src/main/java/com/somemore/global/auth/oauth/dto/KakaoUserProfileResponseDto.java @@ -0,0 +1,10 @@ +package com.somemore.global.auth.oauth.dto; + +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; + +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) +public record KakaoUserProfileResponseDto( + String id // OAuth ID +) { +} From 8a1adfb018bbf6f3e7a885db0cf6e129f4ec1e42 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: Sun, 12 Jan 2025 23:40:36 +0900 Subject: [PATCH 08/19] =?UTF-8?q?feat(oauth):=20=EA=B3=B5=ED=86=B5=20oauth?= =?UTF-8?q?=20=EC=A0=95=EB=B3=B4=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=A0=95?= =?UTF-8?q?=EC=A0=81=20=ED=8C=A9=ED=86=A0=EB=A6=AC=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../somemore/global/auth/oauth/domain/CommonOAuthInfo.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/somemore/global/auth/oauth/domain/CommonOAuthInfo.java b/src/main/java/com/somemore/global/auth/oauth/domain/CommonOAuthInfo.java index 440ec967..fe437f21 100644 --- a/src/main/java/com/somemore/global/auth/oauth/domain/CommonOAuthInfo.java +++ b/src/main/java/com/somemore/global/auth/oauth/domain/CommonOAuthInfo.java @@ -3,4 +3,8 @@ public record CommonOAuthInfo( OAuthProvider provider, String oauthId) { + + public static CommonOAuthInfo of(OAuthProvider provider, String oauthId) { + return new CommonOAuthInfo(provider, oauthId); + } } From 9416b846c6c4b6ec06e2ff4204f3fbae248e5607 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: Sun, 12 Jan 2025 23:41:08 +0900 Subject: [PATCH 09/19] =?UTF-8?q?feat(oauth):=20OAuth2User=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EC=97=90=20OAuthProvider=EB=A5=BC=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=EB=A1=9C=20=EC=B6=94=EA=B0=80=ED=95=9C=20Cus?= =?UTF-8?q?tomOAuth2User=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/oauth/domain/CustomOAuth2User.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/com/somemore/global/auth/oauth/domain/CustomOAuth2User.java diff --git a/src/main/java/com/somemore/global/auth/oauth/domain/CustomOAuth2User.java b/src/main/java/com/somemore/global/auth/oauth/domain/CustomOAuth2User.java new file mode 100644 index 00000000..ec6746d3 --- /dev/null +++ b/src/main/java/com/somemore/global/auth/oauth/domain/CustomOAuth2User.java @@ -0,0 +1,36 @@ +package com.somemore.global.auth.oauth.domain; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.oauth2.core.user.OAuth2User; + +import java.util.Collection; +import java.util.Map; + +@RequiredArgsConstructor +@Getter +public class CustomOAuth2User implements OAuth2User { + + private final OAuth2User oAuth2User; + private final OAuthProvider provider; + + @Override + public Map getAttributes() { + return oAuth2User.getAttributes(); + } + + @Override + public Collection getAuthorities() { + return oAuth2User.getAuthorities(); + } + + @Override + public String getName() { + return oAuth2User.getName(); + } + + public static CustomOAuth2User of(OAuth2User oAuth2User, OAuthProvider oAuthProvider) { + return new CustomOAuth2User(oAuth2User, oAuthProvider); + } +} From 62aa29486f9597a6955b619268257903393cc9a1 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: Sun, 12 Jan 2025 23:42:18 +0900 Subject: [PATCH 10/19] =?UTF-8?q?feat(oauth):=20defaultOAuth2UserService?= =?UTF-8?q?=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=A3=BC=EC=9E=85=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80,=20CustomOAuth2User=20=EC=82=AC=EC=9A=A9=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/auth/oauth/config/OAuth2Config.java | 14 ++++++++++++++ .../oauth/service/CustomOAuth2UserService.java | 18 ++++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/somemore/global/auth/oauth/config/OAuth2Config.java diff --git a/src/main/java/com/somemore/global/auth/oauth/config/OAuth2Config.java b/src/main/java/com/somemore/global/auth/oauth/config/OAuth2Config.java new file mode 100644 index 00000000..539f7306 --- /dev/null +++ b/src/main/java/com/somemore/global/auth/oauth/config/OAuth2Config.java @@ -0,0 +1,14 @@ +package com.somemore.global.auth.oauth.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService; + +@Configuration +public class OAuth2Config { + + @Bean + public DefaultOAuth2UserService defaultOAuth2UserService() { + return new DefaultOAuth2UserService(); + } +} diff --git a/src/main/java/com/somemore/global/auth/oauth/service/CustomOAuth2UserService.java b/src/main/java/com/somemore/global/auth/oauth/service/CustomOAuth2UserService.java index 6f57cfa9..d3212c59 100644 --- a/src/main/java/com/somemore/global/auth/oauth/service/CustomOAuth2UserService.java +++ b/src/main/java/com/somemore/global/auth/oauth/service/CustomOAuth2UserService.java @@ -1,5 +1,7 @@ package com.somemore.global.auth.oauth.service; +import com.somemore.global.auth.oauth.domain.CustomOAuth2User; +import com.somemore.global.auth.oauth.domain.OAuthProvider; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService; @@ -14,18 +16,26 @@ @RequiredArgsConstructor public class CustomOAuth2UserService implements OAuth2UserService { + private final DefaultOAuth2UserService oauth2UserService; + @Override public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException { try { - return fetchOAuthUser(userRequest); + OAuth2User oAuth2User = extractOAuth2User(userRequest); + OAuthProvider oAuthProvider = extractOAuthProvider(userRequest); + + return CustomOAuth2User.of(oAuth2User, oAuthProvider); } catch (OAuth2AuthenticationException e) { log.error("OAuth 사용자 정보를 불러오는 중 문제가 발생했습니다: {}", e.getMessage(), e); throw e; } } - private OAuth2User fetchOAuthUser(OAuth2UserRequest userRequest) { - OAuth2UserService oAuth2UserService = new DefaultOAuth2UserService(); - return oAuth2UserService.loadUser(userRequest); + private OAuth2User extractOAuth2User(OAuth2UserRequest userRequest) { + return oauth2UserService.loadUser(userRequest); + } + + private OAuthProvider extractOAuthProvider(OAuth2UserRequest userRequest) { + return OAuthProvider.from(userRequest.getClientRegistration().getRegistrationId()); } } From 43ca6064db149a76f1db05c0058c44e5bafd42d4 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: Sun, 12 Jan 2025 23:42:47 +0900 Subject: [PATCH 11/19] =?UTF-8?q?feat(oauth):=20OAuth=20=EC=A0=9C=EA=B3=B5?= =?UTF-8?q?=EC=9E=90=20=EB=AA=A9=EB=A1=9D=EC=97=90=20=EC=B9=B4=EC=B9=B4?= =?UTF-8?q?=EC=98=A4=20=EC=B6=94=EA=B0=80,=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../somemore/global/auth/oauth/domain/OAuthProvider.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/somemore/global/auth/oauth/domain/OAuthProvider.java b/src/main/java/com/somemore/global/auth/oauth/domain/OAuthProvider.java index 215927cd..6b01dd82 100644 --- a/src/main/java/com/somemore/global/auth/oauth/domain/OAuthProvider.java +++ b/src/main/java/com/somemore/global/auth/oauth/domain/OAuthProvider.java @@ -4,7 +4,9 @@ @Getter public enum OAuthProvider { - NAVER("naver"); + NAVER("naver"), + KAKAO("kakao"), + ; private final String providerName; @@ -14,7 +16,7 @@ public enum OAuthProvider { public static OAuthProvider from(String providerName) { for (OAuthProvider provider : values()) { - if (provider.providerName.equals(providerName)) { + if (provider.providerName.equalsIgnoreCase(providerName)) { return provider; } } From fc9a7f6db7511fa7f45fe73153ec81c424f23267 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: Sun, 12 Jan 2025 23:44:04 +0900 Subject: [PATCH 12/19] =?UTF-8?q?feat(oauth):=20CustomOAuth2User=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9C=BC=EB=A1=9C=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80,=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 제공자 정보를 제공 받음으로 올바른 분기 처리. - OAuth2User 사용처에서 CustomOAuth2User 사용하도록 변경. --- .../converter/OAuthResponseConverter.java | 4 +- .../converter/OAuthResponseConverterImpl.java | 44 +++++++++++++++++++ .../oauth/processor/OAuthUserProcessor.java | 4 +- .../processor/OAuthUserProcessorImpl.java | 8 ++-- 4 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/somemore/global/auth/oauth/converter/OAuthResponseConverterImpl.java diff --git a/src/main/java/com/somemore/global/auth/oauth/converter/OAuthResponseConverter.java b/src/main/java/com/somemore/global/auth/oauth/converter/OAuthResponseConverter.java index 765774a5..718740d1 100644 --- a/src/main/java/com/somemore/global/auth/oauth/converter/OAuthResponseConverter.java +++ b/src/main/java/com/somemore/global/auth/oauth/converter/OAuthResponseConverter.java @@ -1,8 +1,8 @@ package com.somemore.global.auth.oauth.converter; import com.somemore.global.auth.oauth.domain.CommonOAuthInfo; -import org.springframework.security.oauth2.core.user.OAuth2User; +import com.somemore.global.auth.oauth.domain.CustomOAuth2User; public interface OAuthResponseConverter { - CommonOAuthInfo convert(OAuth2User oAuth2User); + CommonOAuthInfo convert(CustomOAuth2User oAuth2User); } diff --git a/src/main/java/com/somemore/global/auth/oauth/converter/OAuthResponseConverterImpl.java b/src/main/java/com/somemore/global/auth/oauth/converter/OAuthResponseConverterImpl.java new file mode 100644 index 00000000..a5cb8bb3 --- /dev/null +++ b/src/main/java/com/somemore/global/auth/oauth/converter/OAuthResponseConverterImpl.java @@ -0,0 +1,44 @@ +package com.somemore.global.auth.oauth.converter; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.somemore.global.auth.oauth.domain.CommonOAuthInfo; +import com.somemore.global.auth.oauth.domain.CustomOAuth2User; +import com.somemore.global.auth.oauth.domain.OAuthProvider; +import com.somemore.global.auth.oauth.dto.KakaoUserProfileResponseDto; +import com.somemore.global.auth.oauth.dto.NaverUserProfileResponseDto; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class OAuthResponseConverterImpl implements OAuthResponseConverter { + + private final ObjectMapper objectMapper; + + @Override + public CommonOAuthInfo convert(CustomOAuth2User oAuth2User) { + OAuthProvider provider = oAuth2User.getProvider(); + switch (provider) { + case KAKAO: + KakaoUserProfileResponseDto kakaoUserProfile = objectMapper.convertValue( + oAuth2User.getAttributes(), + KakaoUserProfileResponseDto.class + ); + return CommonOAuthInfo.of( + OAuthProvider.KAKAO, + kakaoUserProfile.id() + ); + case NAVER: + NaverUserProfileResponseDto naverUserProfile = objectMapper.convertValue( + oAuth2User.getAttributes(), + NaverUserProfileResponseDto.class + ); + return CommonOAuthInfo.of( + OAuthProvider.NAVER, + naverUserProfile.response().id() + ); + default: + throw new IllegalArgumentException("지원하지 않는 OAuth Provider입니다."); + } + } +} diff --git a/src/main/java/com/somemore/global/auth/oauth/processor/OAuthUserProcessor.java b/src/main/java/com/somemore/global/auth/oauth/processor/OAuthUserProcessor.java index c9bd55bf..eb00e45a 100644 --- a/src/main/java/com/somemore/global/auth/oauth/processor/OAuthUserProcessor.java +++ b/src/main/java/com/somemore/global/auth/oauth/processor/OAuthUserProcessor.java @@ -1,9 +1,9 @@ package com.somemore.global.auth.oauth.processor; -import org.springframework.security.oauth2.core.user.OAuth2User; +import com.somemore.global.auth.oauth.domain.CustomOAuth2User; import java.util.UUID; public interface OAuthUserProcessor { - UUID fetchUserIdByOAuthUser(OAuth2User oauthUser); + UUID fetchUserIdByOAuthUser(CustomOAuth2User oauthUser); } 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 b2ceb691..8bbd19eb 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 @@ -1,16 +1,16 @@ package com.somemore.global.auth.oauth.processor; -import com.somemore.user.domain.UserRole; import com.somemore.global.auth.oauth.checker.OAuthInfoChecker; -import com.somemore.global.auth.oauth.domain.CommonOAuthInfo; 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 lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -29,7 +29,7 @@ public class OAuthUserProcessorImpl implements OAuthUserProcessor { private final OAuthInfoQueryService oAuthInfoQueryService; @Override - public UUID fetchUserIdByOAuthUser(OAuth2User oauthUser) { + public UUID fetchUserIdByOAuthUser(CustomOAuth2User oauthUser) { CommonOAuthInfo oauthInfo = oauthResponseConverter.convert(oauthUser); return findUserIdByOAuthInfo(oauthInfo); } From 2c228d8895c5b00dc9f51653965fac439e8ab793 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: Mon, 13 Jan 2025 00:50:40 +0900 Subject: [PATCH 13/19] =?UTF-8?q?feat(oauth):=20authentication=20to=20Cust?= =?UTF-8?q?omOAuth2User=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C=EC=84=A0,=20?= =?UTF-8?q?=EC=BF=A0=ED=82=A4=20=EA=B0=92=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 쿠키에는 띄어쓰기가 포함될 수 없는 문제 해결. --- .../handler/CustomOAuthSuccessHandler.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/somemore/global/auth/oauth/handler/CustomOAuthSuccessHandler.java b/src/main/java/com/somemore/global/auth/oauth/handler/CustomOAuthSuccessHandler.java index 36ec7e2a..0a4f40fd 100644 --- a/src/main/java/com/somemore/global/auth/oauth/handler/CustomOAuthSuccessHandler.java +++ b/src/main/java/com/somemore/global/auth/oauth/handler/CustomOAuthSuccessHandler.java @@ -4,6 +4,7 @@ import com.somemore.global.auth.jwt.domain.EncodedToken; import com.somemore.global.auth.jwt.domain.TokenType; import com.somemore.global.auth.jwt.usecase.GenerateTokensOnLoginUseCase; +import com.somemore.global.auth.oauth.domain.CustomOAuth2User; import com.somemore.global.auth.oauth.processor.OAuthUserProcessor; import com.somemore.global.auth.redirect.RedirectUseCase; import com.somemore.user.domain.UserRole; @@ -35,7 +36,7 @@ public class CustomOAuthSuccessHandler extends SimpleUrlAuthenticationSuccessHan public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { - OAuth2User oauthUser = extractOAuthUser(authentication); + CustomOAuth2User oauthUser = extractOAuthUser(authentication); UUID userId = oauthUserProcessor.fetchUserIdByOAuthUser(oauthUser); processAccessToken(response, userId); @@ -55,14 +56,28 @@ private void processAccessToken(HttpServletResponse response, UUID userId) { generateTokensOnLoginUseCase.generateLoginToken( userId, UserRole.getOAuthUserDefaultRole()); - cookieUseCase.setToken(response, loginToken.getValueWithPrefix(), TokenType.SIGN_IN); + cookieUseCase.setToken(response, loginToken.value(), TokenType.SIGN_IN); } - private OAuth2User extractOAuthUser(Authentication authentication) { + private CustomOAuth2User extractOAuthUser(Authentication authentication) { + OAuth2AuthenticationToken oAuth2AuthenticationToken = castToOAuth2AuthenticationTokenBy(authentication); + OAuth2User oAuth2User = oAuth2AuthenticationToken.getPrincipal(); + return castToCustomOAuth2UserBy(oAuth2User); + } + + private OAuth2AuthenticationToken castToOAuth2AuthenticationTokenBy(Authentication authentication) { if (authentication instanceof OAuth2AuthenticationToken token) { - return token.getPrincipal(); + return token; } log.error("Authentication 객체가 OAuth2AuthenticationToken 타입이 아닙니다: {}", authentication.getClass().getName()); - throw new IllegalArgumentException("잘못된 인증 객체입니다."); + throw new IllegalArgumentException(); + } + + private CustomOAuth2User castToCustomOAuth2UserBy(OAuth2User oAuth2User) { + if (oAuth2User instanceof CustomOAuth2User customOAuth2User) { + return customOAuth2User; + } + log.error("OAuth2User 객체가 CustomOAuth2User 타입이 아닙니다: {}", oAuth2User.getClass().getName()); + throw new IllegalArgumentException(); } } From 99c877e00f5aa2462da3fa6d0289bd4a735ba2fc 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: Mon, 13 Jan 2025 00:51:06 +0900 Subject: [PATCH 14/19] =?UTF-8?q?feat(oauth):=20=EB=84=A4=EC=9D=B4?= =?UTF-8?q?=EB=B2=84=20=EC=9C=A0=EC=A0=80=20=EC=9D=91=EB=8B=B5=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=A0=84=EC=9A=A9=20=EC=BB=A8=EB=B2=84=ED=84=B0=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NaverOAuthResponseConverter.java | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 src/main/java/com/somemore/global/auth/oauth/converter/NaverOAuthResponseConverter.java diff --git a/src/main/java/com/somemore/global/auth/oauth/converter/NaverOAuthResponseConverter.java b/src/main/java/com/somemore/global/auth/oauth/converter/NaverOAuthResponseConverter.java deleted file mode 100644 index a3d68acb..00000000 --- a/src/main/java/com/somemore/global/auth/oauth/converter/NaverOAuthResponseConverter.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.somemore.global.auth.oauth.converter; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.somemore.global.auth.oauth.domain.CommonOAuthInfo; -import com.somemore.global.auth.oauth.domain.OAuthProvider; -import com.somemore.global.auth.oauth.naver.dto.NaverUserProfileResponseDto; -import org.springframework.security.oauth2.core.user.OAuth2User; -import org.springframework.stereotype.Component; - -@Component -public class NaverOAuthResponseConverter implements OAuthResponseConverter { - - @Override - public CommonOAuthInfo convert(OAuth2User oAuth2User) { - NaverUserProfileResponseDto naverUserProfileResponseDto = new ObjectMapper().convertValue(oAuth2User.getAttributes(), NaverUserProfileResponseDto.class); - - return new CommonOAuthInfo( - OAuthProvider.NAVER, - naverUserProfileResponseDto.response().id()); - } -} From 12a0f3f816a2fce23f0e6497b633a1e932b4b817 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: Mon, 13 Jan 2025 00:51:13 +0900 Subject: [PATCH 15/19] =?UTF-8?q?feat(oauth):=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oauth/{naver => }/dto/NaverUserProfileResponseDto.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename src/main/java/com/somemore/global/auth/oauth/{naver => }/dto/NaverUserProfileResponseDto.java (85%) diff --git a/src/main/java/com/somemore/global/auth/oauth/naver/dto/NaverUserProfileResponseDto.java b/src/main/java/com/somemore/global/auth/oauth/dto/NaverUserProfileResponseDto.java similarity index 85% rename from src/main/java/com/somemore/global/auth/oauth/naver/dto/NaverUserProfileResponseDto.java rename to src/main/java/com/somemore/global/auth/oauth/dto/NaverUserProfileResponseDto.java index 5272e770..b2603c3a 100644 --- a/src/main/java/com/somemore/global/auth/oauth/naver/dto/NaverUserProfileResponseDto.java +++ b/src/main/java/com/somemore/global/auth/oauth/dto/NaverUserProfileResponseDto.java @@ -1,4 +1,4 @@ -package com.somemore.global.auth.oauth.naver.dto; +package com.somemore.global.auth.oauth.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.databind.PropertyNamingStrategies; @@ -12,7 +12,7 @@ public record NaverUserProfileResponseDto( ) { @JsonIgnoreProperties(ignoreUnknown = true) public record Response( - String id // 일련 번호 + String id // OAuth ID ) { } } From 7f12ef297fdbbfdad09a5c61c5c2c97a3ed644bf 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: Mon, 13 Jan 2025 01:04:19 +0900 Subject: [PATCH 16/19] =?UTF-8?q?feat:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/somemore/develop/controller/TokenGenerateMachine.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/java/com/somemore/develop/controller/TokenGenerateMachine.java diff --git a/src/main/java/com/somemore/develop/controller/TokenGenerateMachine.java b/src/main/java/com/somemore/develop/controller/TokenGenerateMachine.java deleted file mode 100644 index e69de29b..00000000 From ae1799d6f4126d21efea06a5683a5dbb884ff426 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: Mon, 13 Jan 2025 01:04:59 +0900 Subject: [PATCH 17/19] =?UTF-8?q?feat(oauth):=20=EC=86=8C=EC=85=9C=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20URL=20=ED=9A=8D=EB=93=9D=20?= =?UTF-8?q?=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../volunteer/controller/VolunteerSignController.java | 9 ++------- .../volunteer/service/GenerateOAuthUrlService.java | 3 ++- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/somemore/domains/volunteer/controller/VolunteerSignController.java b/src/main/java/com/somemore/domains/volunteer/controller/VolunteerSignController.java index 42fb71ab..0373acc2 100644 --- a/src/main/java/com/somemore/domains/volunteer/controller/VolunteerSignController.java +++ b/src/main/java/com/somemore/domains/volunteer/controller/VolunteerSignController.java @@ -1,9 +1,8 @@ package com.somemore.domains.volunteer.controller; import com.somemore.domains.volunteer.usecase.GenerateOAuthUrlUseCase; -import com.somemore.global.common.response.ApiResponse; -import com.somemore.global.exception.BadRequestException; import com.somemore.global.auth.signout.usecase.SignOutUseCase; +import com.somemore.global.common.response.ApiResponse; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; @@ -32,11 +31,7 @@ public RedirectView signIn( @Parameter(name = "oauthProvider", description = "OAuth 제공자 선택", example = "naver", required = true, schema = @Schema(allowableValues = {"naver"})) @PathVariable("oauthProvider") String oauthProvider) { - String redirectUrl = switch (oauthProvider.toLowerCase()) { - case "naver" -> generateOAuthUrlUseCase.generateUrl(oauthProvider); - - default -> throw new BadRequestException("지원되지 않는 OAuth 제공자: " + oauthProvider); - }; + String redirectUrl = generateOAuthUrlUseCase.generateUrl(oauthProvider); return new RedirectView(redirectUrl); } diff --git a/src/main/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlService.java b/src/main/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlService.java index 7963b82e..ffb0dd75 100644 --- a/src/main/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlService.java +++ b/src/main/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlService.java @@ -1,6 +1,7 @@ package com.somemore.domains.volunteer.service; import com.somemore.domains.volunteer.usecase.GenerateOAuthUrlUseCase; +import com.somemore.global.auth.oauth.domain.OAuthProvider; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -18,7 +19,7 @@ public class GenerateOAuthUrlService implements GenerateOAuthUrlUseCase { @Override public String generateUrl(String oAuthProvider) { return UriComponentsBuilder.fromHttpUrl(generateBaseUrl()) - .pathSegment(oAuthProvider) + .pathSegment(OAuthProvider.from(oAuthProvider).getProviderName()) .build() .toUriString(); } From f94f803b44a3d8723b79b107f074449b4e3fc0a0 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: Mon, 13 Jan 2025 14:17:35 +0900 Subject: [PATCH 18/19] =?UTF-8?q?test(oauth):=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 구글에서 카카오로 변경 --- .../volunteer/service/GenerateOAuthUrlServiceTest.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlServiceTest.java b/src/test/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlServiceTest.java index c97feb40..8c0e7170 100644 --- a/src/test/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlServiceTest.java +++ b/src/test/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlServiceTest.java @@ -1,5 +1,6 @@ package com.somemore.domains.volunteer.service; +import com.somemore.global.auth.oauth.domain.OAuthProvider; import com.somemore.support.IntegrationTestSupport; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -19,7 +20,7 @@ class GenerateOAuthUrlServiceTest extends IntegrationTestSupport { @Test void generateUrl_ShouldReturnCorrectUrl_ForNaver() { // Given - String oAuthProvider = "naver"; + String oAuthProvider = OAuthProvider.NAVER.getProviderName(); // When String result = generateOAuthUrlService.generateUrl(oAuthProvider); @@ -31,15 +32,15 @@ void generateUrl_ShouldReturnCorrectUrl_ForNaver() { } @Test - void generateUrl_ShouldReturnCorrectUrl_ForGoogle() { + void generateUrl_ShouldReturnCorrectUrl_ForKakao() { // Given - String oAuthProvider = "google"; + String oAuthProvider = OAuthProvider.KAKAO.getProviderName(); // When String result = generateOAuthUrlService.generateUrl(oAuthProvider); // Then - String expectedUrl = backendRootUrl + "/oauth2/authorization/google"; + String expectedUrl = backendRootUrl + "/oauth2/authorization/kakao"; assertThat(result).isEqualTo(expectedUrl); } From fa8db0284dccea29cdc6de07acb97d540e2b42b3 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: Mon, 13 Jan 2025 16:23:32 +0900 Subject: [PATCH 19/19] =?UTF-8?q?test(oauth):=20DisplayName=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/volunteer/service/GenerateOAuthUrlServiceTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlServiceTest.java b/src/test/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlServiceTest.java index 8c0e7170..92d6aebf 100644 --- a/src/test/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlServiceTest.java +++ b/src/test/java/com/somemore/domains/volunteer/service/GenerateOAuthUrlServiceTest.java @@ -2,6 +2,7 @@ import com.somemore.global.auth.oauth.domain.OAuthProvider; import com.somemore.support.IntegrationTestSupport; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -18,6 +19,7 @@ class GenerateOAuthUrlServiceTest extends IntegrationTestSupport { @Test + @DisplayName("Naver 제공자를 위한 OAuth URL이 올바르게 생성되는지 검증") void generateUrl_ShouldReturnCorrectUrl_ForNaver() { // Given String oAuthProvider = OAuthProvider.NAVER.getProviderName(); @@ -32,6 +34,7 @@ void generateUrl_ShouldReturnCorrectUrl_ForNaver() { } @Test + @DisplayName("Kakao 제공자를 위한 OAuth URL이 올바르게 생성되는지 검증") void generateUrl_ShouldReturnCorrectUrl_ForKakao() { // Given String oAuthProvider = OAuthProvider.KAKAO.getProviderName();