diff --git a/src/main/java/com/example/be/service/UserServiceImpl.java b/src/main/java/com/example/be/service/UserServiceImpl.java index 367c707..6724ad8 100644 --- a/src/main/java/com/example/be/service/UserServiceImpl.java +++ b/src/main/java/com/example/be/service/UserServiceImpl.java @@ -4,6 +4,7 @@ import com.example.be.apiPayload.exception.handler.UserHandler; import com.example.be.domain.RefreshToken; import com.example.be.domain.User; +import com.example.be.domain.enums.LoginType; import com.example.be.repository.RefreshTokenRepository; import com.example.be.repository.UserRepository; import com.example.be.web.dto.CommonDTO; diff --git a/src/main/java/com/example/be/web/controller/UserController.java b/src/main/java/com/example/be/web/controller/UserController.java index 28c9606..7a71368 100644 --- a/src/main/java/com/example/be/web/controller/UserController.java +++ b/src/main/java/com/example/be/web/controller/UserController.java @@ -1,21 +1,36 @@ package com.example.be.web.controller; import com.example.be.apiPayload.ApiResponse; +import com.example.be.apiPayload.code.status.ErrorStatus; +import com.example.be.apiPayload.exception.handler.UserHandler; +import com.example.be.domain.User; +import com.example.be.repository.UserRepository; +import com.example.be.service.JwtUtilServiceImpl; import com.example.be.service.UserServiceImpl; import com.example.be.web.dto.CommonDTO; import com.example.be.web.dto.UserDTO; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.Operation; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.UUID; + @RestController @RequestMapping("/user") @RequiredArgsConstructor public class UserController { private final UserServiceImpl userService; + private final SystemMetricsAutoConfiguration systemMetricsAutoConfiguration; + private final JwtUtilServiceImpl jwtUtilServiceImpl; + private final UserRepository userRepository; @Hidden @GetMapping("/socialLogin") @@ -41,4 +56,41 @@ public ApiResponse login(@RequestBody UserDTO.LoginReque return ApiResponse.onSuccess(userService.login(request, response)); } + @PostMapping("/info") + @Operation(summary = "유저 정보 반환 API") + public ApiResponse userInfo(HttpServletRequest request) { + String accessToken = null; + Cookie[] cookies = request.getCookies(); + + if(cookies != null) { + for(Cookie cookie : cookies) { + if(cookie.getName().equals("accessToken")) { + accessToken = cookie.getValue(); + } + } + } + System.out.println(accessToken); + + // 토큰이 없는 경우 처리 + if(accessToken == null) { + throw new UserHandler(ErrorStatus._NOT_FOUND_USER); + } + + // 토큰에서 사용자 ID 추출 + String userId = jwtUtilServiceImpl.getUserIdFromToken(accessToken); + + // 사용자 정보 조회 + User user = userRepository.findByUserId(UUID.fromString(userId)) + .orElseThrow(() -> new UserHandler(ErrorStatus._NOT_FOUND_USER)); + + // UserResponseDto로 변환하여 반환 + UserDTO.UserResponseDto userResponseDto = UserDTO.UserResponseDto.builder() + .userId(user.getId()) + .userName(user.getName()) + .email(user.getEmail()) + .loginType(user.getProvider()) + .build(); + + return ApiResponse.onSuccess(userResponseDto); } + } diff --git a/src/main/java/com/example/be/web/dto/UserDTO.java b/src/main/java/com/example/be/web/dto/UserDTO.java index 8c1abb1..6d2737f 100644 --- a/src/main/java/com/example/be/web/dto/UserDTO.java +++ b/src/main/java/com/example/be/web/dto/UserDTO.java @@ -15,7 +15,7 @@ public class UserDTO { public static class UserResponseDto { private Long userId; private String userName; - private LoginType loginType; + private String loginType; private String email; }