From 51ccb0f16f0de000d6793bde81d698ff8e29e5cb Mon Sep 17 00:00:00 2001 From: hyxklee Date: Thu, 14 Nov 2024 03:39:22 +0900 Subject: [PATCH] =?UTF-8?q?HOTFIX:=20=EC=BB=A4=EC=8A=A4=ED=85=80=20id=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EC=B2=B4=ED=81=AC=20=EB=B0=8F=20=EC=BB=A4?= =?UTF-8?q?=EC=8A=A4=ED=85=80=20id=EB=A1=9C=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../X/domain/user/controller/UserController.java | 6 +++--- .../user/exception/DuplicateCustomIdException.java | 11 +++++++++++ .../leets/X/domain/user/exception/ErrorMessage.java | 3 ++- .../X/domain/user/repository/UserRepository.java | 4 ++++ .../leets/X/domain/user/service/UserService.java | 13 ++++++++++--- .../com/leets/X/global/config/SecurityConfig.java | 1 + 6 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/leets/X/domain/user/exception/DuplicateCustomIdException.java diff --git a/src/main/java/com/leets/X/domain/user/controller/UserController.java b/src/main/java/com/leets/X/domain/user/controller/UserController.java index 3bd8a9d..244f044 100644 --- a/src/main/java/com/leets/X/domain/user/controller/UserController.java +++ b/src/main/java/com/leets/X/domain/user/controller/UserController.java @@ -53,10 +53,10 @@ public ResponseDto initUserProfile(@RequestBody @Valid UserInitializeReq return ResponseDto.response(INIT_PROFILE_SUCCESS.getCode(), INIT_PROFILE_SUCCESS.getMessage()); } - @GetMapping("/profile/{userId}") + @GetMapping("/profile/{customId}") @Operation(summary = "유저 기본 프로필 조회") - public ResponseDto getUserProfile(@PathVariable Long userId, @AuthenticationPrincipal @Parameter(hidden = true) String email) { - return ResponseDto.response(GET_PROFILE_SUCCESS.getCode(), GET_PROFILE_SUCCESS.getMessage(), userService.getProfile(userId, email)); + public ResponseDto getUserProfile(@PathVariable String customId, @AuthenticationPrincipal @Parameter(hidden = true) String email) { + return ResponseDto.response(GET_PROFILE_SUCCESS.getCode(), GET_PROFILE_SUCCESS.getMessage(), userService.getProfile(customId, email)); } @PatchMapping(value="/profile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) diff --git a/src/main/java/com/leets/X/domain/user/exception/DuplicateCustomIdException.java b/src/main/java/com/leets/X/domain/user/exception/DuplicateCustomIdException.java new file mode 100644 index 0000000..09e87c0 --- /dev/null +++ b/src/main/java/com/leets/X/domain/user/exception/DuplicateCustomIdException.java @@ -0,0 +1,11 @@ +package com.leets.X.domain.user.exception; + +import com.leets.X.global.common.exception.BaseException; + +import static com.leets.X.domain.user.exception.ErrorMessage.*; + +public class DuplicateCustomIdException extends BaseException { + public DuplicateCustomIdException() { + super(DUPLICATE_CUSTOMID.getCode(), DUPLICATE_CUSTOMID.getMessage()); + } +} diff --git a/src/main/java/com/leets/X/domain/user/exception/ErrorMessage.java b/src/main/java/com/leets/X/domain/user/exception/ErrorMessage.java index 5af4cb7..aac20d9 100644 --- a/src/main/java/com/leets/X/domain/user/exception/ErrorMessage.java +++ b/src/main/java/com/leets/X/domain/user/exception/ErrorMessage.java @@ -9,7 +9,8 @@ public enum ErrorMessage { USER_NOT_FOUND(404,"존재하지 않는 유저입니다."), USER1_NOT_FOUND(404, "유저1은 존재하지 않습니다."), - USER2_NOT_FOUND(404, "유저2는 존재하지 않습니다."); + USER2_NOT_FOUND(404, "유저2는 존재하지 않습니다."), + DUPLICATE_CUSTOMID(400, "중복된 CustomId입니다."); // 송우석 추가 내용 diff --git a/src/main/java/com/leets/X/domain/user/repository/UserRepository.java b/src/main/java/com/leets/X/domain/user/repository/UserRepository.java index 8bd4605..66e5269 100644 --- a/src/main/java/com/leets/X/domain/user/repository/UserRepository.java +++ b/src/main/java/com/leets/X/domain/user/repository/UserRepository.java @@ -8,6 +8,10 @@ public interface UserRepository extends JpaRepository { Boolean existsByEmail(String email); + boolean existsByCustomId(String customId); + Optional findByEmail(String email); + Optional findByCustomId(String customId); + } diff --git a/src/main/java/com/leets/X/domain/user/service/UserService.java b/src/main/java/com/leets/X/domain/user/service/UserService.java index 6045138..6568067 100644 --- a/src/main/java/com/leets/X/domain/user/service/UserService.java +++ b/src/main/java/com/leets/X/domain/user/service/UserService.java @@ -9,6 +9,7 @@ import com.leets.X.domain.user.dto.request.UserUpdateRequest; import com.leets.X.domain.user.dto.response.UserProfileResponse; import com.leets.X.domain.user.dto.response.UserSocialLoginResponse; +import com.leets.X.domain.user.exception.DuplicateCustomIdException; import com.leets.X.domain.user.exception.UserNotFoundException; import com.leets.X.domain.user.repository.UserRepository; import com.leets.X.global.auth.google.AuthService; @@ -62,7 +63,7 @@ public UserSocialLoginResponse authenticate(String authCode) { @Transactional public void initProfile(UserInitializeRequest dto, String email){ User user = find(email); - + valid(dto.customId()); user.initProfile(dto); } @@ -84,8 +85,8 @@ public void updateProfile(UserUpdateRequest dto, MultipartFile image, String ema user.update(dto, savedImage); } - public UserProfileResponse getProfile(Long userId, String email){ - User user = userRepository.findById(userId) + public UserProfileResponse getProfile(String customId, String email){ + User user = userRepository.findByCustomId(customId) .orElseThrow(UserNotFoundException::new); boolean isMyProfile = user.getEmail().equals(email); boolean isFollowing = checkFollowing(user, email); @@ -138,6 +139,12 @@ private ImageDto getImage(User user){ return null; } + private void valid(String customId) { + if(userRepository.existsByCustomId(customId)) { + throw new DuplicateCustomIdException(); + } + } + /* * userRepository에서 사용자를 검색하는 메서드 * 공통으로 사용되는 부분이 많기 때문에 별도로 분리 diff --git a/src/main/java/com/leets/X/global/config/SecurityConfig.java b/src/main/java/com/leets/X/global/config/SecurityConfig.java index 2fa882d..beb18ac 100644 --- a/src/main/java/com/leets/X/global/config/SecurityConfig.java +++ b/src/main/java/com/leets/X/global/config/SecurityConfig.java @@ -83,6 +83,7 @@ public CorsConfigurationSource corsConfigurationSource() { configuration.addAllowedOriginPattern("http://localhost:3000"); configuration.addAllowedOriginPattern("https://43.203.226.98.nip.io"); + configuration.addAllowedOriginPattern("https://main.dr9bfn52wjqx9.amplifyapp.com"); configuration.addAllowedOriginPattern("http://127.0.0.1:5500"); // HTML Live Server CORS 설정 configuration.addAllowedMethod("*"); configuration.addAllowedHeader("*");