From d0673c7b711a54d478269584b13f45cb5b8171a7 Mon Sep 17 00:00:00 2001 From: kobumseouk Date: Sat, 2 Aug 2025 23:24:41 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EB=AA=A8=EB=93=A0=20=EC=86=8C=EC=85=9C=20=EC=97=B0=EB=8F=99=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=A1=B0=ED=9A=8C=20=EA=B5=AC=ED=98=84(?= =?UTF-8?q?=ED=99=95=EC=9D=B8=EC=9A=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oauth/dto/SocialConnectionResponseDto.java | 13 +++++++++++++ .../gitdeun/user/controller/AuthController.java | 11 +++++++++++ .../gitdeun/user/service/AuthService.java | 17 +++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 src/main/java/com/teamEWSN/gitdeun/common/oauth/dto/SocialConnectionResponseDto.java diff --git a/src/main/java/com/teamEWSN/gitdeun/common/oauth/dto/SocialConnectionResponseDto.java b/src/main/java/com/teamEWSN/gitdeun/common/oauth/dto/SocialConnectionResponseDto.java new file mode 100644 index 0000000..b2c7ef2 --- /dev/null +++ b/src/main/java/com/teamEWSN/gitdeun/common/oauth/dto/SocialConnectionResponseDto.java @@ -0,0 +1,13 @@ +package com.teamEWSN.gitdeun.common.oauth.dto; + +import com.teamEWSN.gitdeun.common.oauth.entity.OauthProvider; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +@Getter +@AllArgsConstructor +public class SocialConnectionResponseDto { + private List connectedProviders; +} \ No newline at end of file diff --git a/src/main/java/com/teamEWSN/gitdeun/user/controller/AuthController.java b/src/main/java/com/teamEWSN/gitdeun/user/controller/AuthController.java index 4ad229b..775ccb4 100644 --- a/src/main/java/com/teamEWSN/gitdeun/user/controller/AuthController.java +++ b/src/main/java/com/teamEWSN/gitdeun/user/controller/AuthController.java @@ -3,6 +3,7 @@ import com.teamEWSN.gitdeun.common.cookie.CookieUtil; import com.teamEWSN.gitdeun.common.jwt.CustomUserDetails; import com.teamEWSN.gitdeun.common.jwt.JwtToken; +import com.teamEWSN.gitdeun.common.oauth.dto.SocialConnectionResponseDto; import com.teamEWSN.gitdeun.common.oauth.entity.OauthProvider; import com.teamEWSN.gitdeun.common.oauth.service.OAuthStateService; import com.teamEWSN.gitdeun.common.oauth.service.SocialTokenRefreshService; @@ -78,4 +79,14 @@ public ResponseEntity refreshSocial( socialTokenRefreshService.refreshSocialToken(user.getId(), provider); return ResponseEntity.noContent().build(); } + + // socialconnection 확인용 + @GetMapping("/social") + public ResponseEntity getSocialConnections( + @AuthenticationPrincipal CustomUserDetails user + ) { + SocialConnectionResponseDto response = authService.getConnectedProviders(user.getId()); + return ResponseEntity.ok(response); + } + } diff --git a/src/main/java/com/teamEWSN/gitdeun/user/service/AuthService.java b/src/main/java/com/teamEWSN/gitdeun/user/service/AuthService.java index 24fd669..34ef673 100644 --- a/src/main/java/com/teamEWSN/gitdeun/user/service/AuthService.java +++ b/src/main/java/com/teamEWSN/gitdeun/user/service/AuthService.java @@ -6,6 +6,7 @@ import com.teamEWSN.gitdeun.common.exception.GlobalException; import com.teamEWSN.gitdeun.common.cookie.CookieUtil; import com.teamEWSN.gitdeun.common.jwt.*; +import com.teamEWSN.gitdeun.common.oauth.dto.SocialConnectionResponseDto; import com.teamEWSN.gitdeun.common.oauth.entity.OauthProvider; import com.teamEWSN.gitdeun.common.oauth.entity.SocialConnection; import com.teamEWSN.gitdeun.common.oauth.repository.SocialConnectionRepository; @@ -20,7 +21,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; @Slf4j @@ -106,4 +109,18 @@ public void connectGithubAccount(OAuth2User githubUser, Long userId) { socialConnectionRepository.save(connection); } + // 사용자의 모든 소셜 연동 정보를 조회 + @Transactional(readOnly = true) + public SocialConnectionResponseDto getConnectedProviders(Long userId) { + // userId로 사용자를 조회 + User user = userService.findById(userId); + + // 사용자의 SocialConnection 리스트에서 Provider 정보만 추출하여 리스트 생성 + List providers = user.getSocialConnections().stream() + .map(SocialConnection::getProvider) + .collect(Collectors.toList()); + + // DTO에 담아 반환 변환 + return new SocialConnectionResponseDto(providers); + } } From dc5233a3089647015829c27262cc014217c64f5b Mon Sep 17 00:00:00 2001 From: kobumseouk Date: Sun, 3 Aug 2025 15:41:23 +0900 Subject: [PATCH 2/2] =?UTF-8?q?setting:=20github.redirect-uri=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 2 +- src/main/resources/application-prod.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f8f3507..aa9f869 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -13,7 +13,7 @@ spring: github: client-id: ${GITHUB_DEV_CLIENT_ID} client-secret: ${GITHUB_DEV_CLIENT_SECRET} - redirect-uri: http://localhost:8080/api/auth/github/callback + redirect-uri: http://localhost:8080/login/oauth2/code/github # provider: # google: # authorization-uri: https://accounts.google.com/o/oauth2/v2/auth diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 07c7b4e..cf65f9a 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -17,7 +17,7 @@ spring: github: client-id: ${GITHUB_PROD_CLIENT_ID} client-secret: ${GITHUB_PROD_CLIENT_SECRET} - redirect-uri: https://api.gitdeun.site/api/auth/github/callback + redirect-uri: https://api.gitdeun.site/login/oauth2/code/github jwt: