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); + } } 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: