diff --git a/api-module/src/main/java/com/likelion/apimodule/user/application/LoginUseCase.java b/api-module/src/main/java/com/likelion/apimodule/user/application/LoginUseCase.java index b04a648..46a47ca 100644 --- a/api-module/src/main/java/com/likelion/apimodule/user/application/LoginUseCase.java +++ b/api-module/src/main/java/com/likelion/apimodule/user/application/LoginUseCase.java @@ -2,7 +2,9 @@ import com.likelion.apimodule.security.util.JwtUtil; import com.likelion.apimodule.user.dto.KakaoLoginRequest; +import com.likelion.apimodule.user.dto.LoginInfo; import com.likelion.coremodule.user.application.KakaoIdTokenDecodeService; +import com.likelion.coremodule.user.application.UserQueryService; import com.likelion.coremodule.user.domain.User; import com.likelion.coremodule.user.dto.LoginAddResponse; import com.likelion.coremodule.user.dto.LoginResponse; @@ -20,6 +22,7 @@ public class LoginUseCase { private final KakaoIdTokenDecodeService kakaoIdTokenDecodeService; + private final UserQueryService userQueryService; private final UserRepository userRepository; private final JwtUtil jwtUtil; @@ -51,6 +54,18 @@ private User createNewKakaoUser(final OidcDecodePayload oidcDecodePayload) { return userRepository.save(newUser); } + public LoginInfo getLoginInfo(String accessToken) { + + String email = jwtUtil.getEmail(accessToken); + User user = userQueryService.findByEmail(email); + + return new LoginInfo( + user.getName(), + user.getPicture(), + user.getEmail() + ); + } + @Transactional public LoginResponse reissueToken(String refreshToken) { diff --git a/api-module/src/main/java/com/likelion/apimodule/user/dto/LoginInfo.java b/api-module/src/main/java/com/likelion/apimodule/user/dto/LoginInfo.java new file mode 100644 index 0000000..7670fe0 --- /dev/null +++ b/api-module/src/main/java/com/likelion/apimodule/user/dto/LoginInfo.java @@ -0,0 +1,8 @@ +package com.likelion.apimodule.user.dto; + +public record LoginInfo( + String name, + String picture, + String email +) { +} diff --git a/api-module/src/main/java/com/likelion/apimodule/user/presentation/UserController.java b/api-module/src/main/java/com/likelion/apimodule/user/presentation/UserController.java index d0354be..0da84e2 100644 --- a/api-module/src/main/java/com/likelion/apimodule/user/presentation/UserController.java +++ b/api-module/src/main/java/com/likelion/apimodule/user/presentation/UserController.java @@ -2,7 +2,9 @@ import com.likelion.apimodule.user.application.LoginUseCase; import com.likelion.apimodule.user.dto.KakaoLoginRequest; +import com.likelion.apimodule.user.dto.LoginInfo; import com.likelion.commonmodule.exception.common.ApplicationResponse; +import com.likelion.commonmodule.exception.jwt.JwtAccessDeniedHandler; import com.likelion.commonmodule.security.util.AuthConsts; import com.likelion.coremodule.user.dto.LoginAddResponse; import com.likelion.coremodule.user.dto.LoginResponse; @@ -23,6 +25,7 @@ public class UserController { private final LoginUseCase loginUseCase; + private final JwtAccessDeniedHandler jwtAccessDeniedHandler; @PostMapping("/login/kakao") @ApiResponses( @@ -40,6 +43,22 @@ public ApplicationResponse kakaoLogin(@Valid @RequestBody Kaka return ApplicationResponse.ok(response); } + @GetMapping("/mypage") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "마이페이지 정보 전달", + useReturnTypeSchema = true + ) + } + ) + @Operation(summary = "마이페이지 정보 전달 API", description = "마이페이지 정보 전달 API입니다.") + public ApplicationResponse getLoginInfo(@RequestHeader(AuthConsts.ACCESS_TOKEN_HEADER) String accessToken) { + LoginInfo info = loginUseCase.getLoginInfo(accessToken); + return ApplicationResponse.ok(info); + } + @GetMapping("/reissue") @ApiResponses( value = {