From fc8495770aae1e711d49f4509ed49e4fe5a633c8 Mon Sep 17 00:00:00 2001 From: yongckim Date: Sat, 16 Mar 2024 23:27:02 +0900 Subject: [PATCH] =?UTF-8?q?:bug:=20[STMT-146]=20=ED=91=9C=EC=A4=80=20?= =?UTF-8?q?=EC=98=88=EC=99=B8=EA=B0=80=20=EC=95=84=EB=8B=8C=20=EC=BB=A4?= =?UTF-8?q?=EC=8A=A4=ED=85=80=20=EC=98=88=EC=99=B8=EB=A5=BC=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/exception/IllegalKeyAlgorithmException.java | 5 +++++ .../exception/NotExistsOAuthProviderException.java | 11 +++++++++++ .../client/oauth/apple/AppleIdTokenProvider.java | 2 +- .../common/exception/model/NotExistsException.java | 9 +++++++++ .../com/stumeet/server/common/response/ErrorCode.java | 2 ++ .../out/persistence/MemberPersistenceAdapter.java | 5 ++++- .../stumeet/server/member/domain/OAuthProvider.java | 4 +++- .../domain/exception/MemberNotExistsException.java | 10 ++++++++++ 8 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/stumeet/server/common/auth/exception/NotExistsOAuthProviderException.java create mode 100644 src/main/java/com/stumeet/server/common/exception/model/NotExistsException.java create mode 100644 src/main/java/com/stumeet/server/member/domain/exception/MemberNotExistsException.java diff --git a/src/main/java/com/stumeet/server/common/auth/exception/IllegalKeyAlgorithmException.java b/src/main/java/com/stumeet/server/common/auth/exception/IllegalKeyAlgorithmException.java index 0cc34fe6..8a2e0543 100644 --- a/src/main/java/com/stumeet/server/common/auth/exception/IllegalKeyAlgorithmException.java +++ b/src/main/java/com/stumeet/server/common/auth/exception/IllegalKeyAlgorithmException.java @@ -6,6 +6,11 @@ public class IllegalKeyAlgorithmException extends AuthenticationException { private final ErrorCode errorCode; + public IllegalKeyAlgorithmException(ErrorCode errorCode) { + super(errorCode.getMessage()); + this.errorCode = errorCode; + } + public IllegalKeyAlgorithmException(ErrorCode errorCode, Throwable cause) { super(errorCode.getMessage(), cause); this.errorCode = errorCode; diff --git a/src/main/java/com/stumeet/server/common/auth/exception/NotExistsOAuthProviderException.java b/src/main/java/com/stumeet/server/common/auth/exception/NotExistsOAuthProviderException.java new file mode 100644 index 00000000..35363371 --- /dev/null +++ b/src/main/java/com/stumeet/server/common/auth/exception/NotExistsOAuthProviderException.java @@ -0,0 +1,11 @@ +package com.stumeet.server.common.auth.exception; + +import com.stumeet.server.common.response.ErrorCode; +import org.springframework.security.core.AuthenticationException; + +public class NotExistsOAuthProviderException extends AuthenticationException { + + public NotExistsOAuthProviderException(ErrorCode errorCode) { + super(errorCode.getMessage()); + } +} diff --git a/src/main/java/com/stumeet/server/common/client/oauth/apple/AppleIdTokenProvider.java b/src/main/java/com/stumeet/server/common/client/oauth/apple/AppleIdTokenProvider.java index 93890acc..a65aa861 100644 --- a/src/main/java/com/stumeet/server/common/client/oauth/apple/AppleIdTokenProvider.java +++ b/src/main/java/com/stumeet/server/common/client/oauth/apple/AppleIdTokenProvider.java @@ -31,7 +31,7 @@ public PublicKey getSecretKey(ApplePublicKeyResponses publicKeys, String accessT ApplePublicKeyResponses.ApplePublicKeyResponse applePublicKey = publicKeys.keys().stream() .filter(key -> key.kid().equals(kid)) .findAny() - .orElseThrow(() -> new IllegalArgumentException("매칭되는 kid가 존재하지 않습니다.")); + .orElseThrow(() -> new IllegalKeyAlgorithmException(ErrorCode.ILLEGAL_KEY_ALGORITHM_EXCEPTION)); BigInteger modulus = new BigInteger(1, Base64.getUrlDecoder().decode(applePublicKey.n())); BigInteger publicExponent = new BigInteger(1, Base64.getUrlDecoder().decode(applePublicKey.e())); diff --git a/src/main/java/com/stumeet/server/common/exception/model/NotExistsException.java b/src/main/java/com/stumeet/server/common/exception/model/NotExistsException.java new file mode 100644 index 00000000..a7cc4463 --- /dev/null +++ b/src/main/java/com/stumeet/server/common/exception/model/NotExistsException.java @@ -0,0 +1,9 @@ +package com.stumeet.server.common.exception.model; + +import com.stumeet.server.common.response.ErrorCode; + +public class NotExistsException extends BusinessException { + public NotExistsException(String message, ErrorCode errorCode) { + super(message, errorCode); + } +} diff --git a/src/main/java/com/stumeet/server/common/response/ErrorCode.java b/src/main/java/com/stumeet/server/common/response/ErrorCode.java index 2767bb5e..b40e18e5 100644 --- a/src/main/java/com/stumeet/server/common/response/ErrorCode.java +++ b/src/main/java/com/stumeet/server/common/response/ErrorCode.java @@ -33,6 +33,7 @@ public enum ErrorCode { JWT_INVALID_SIGNATURE_EXCEPTION(HttpStatus.UNAUTHORIZED, "JWT 서명이 유효하지 않습니다."), ILLEGAL_KEY_ALGORITHM_EXCEPTION(HttpStatus.UNAUTHORIZED, "유효하지 않은 키 알고리즘입니다."), JWT_TOKEN_PARSING_EXCEPTION(HttpStatus.UNAUTHORIZED, "JWT 토큰 파싱에 실패했습니다."), + NOT_EXIST_OAUTH_PROVIDER(HttpStatus.UNAUTHORIZED, "존재하지 않는 OAuth 제공자입니다."), /* 403 - FORBIDDEN @@ -43,6 +44,7 @@ public enum ErrorCode { 404 - NOT FOUND */ STUDY_NOT_FOUND(HttpStatus.NOT_FOUND, "존재하지 않는 스터디 입니다."), + MEMBER_NOT_FOUND(HttpStatus.NOT_FOUND, "존재하지 않는 멤버 입니다."), /* 500 - INTERNAL SERVER ERROR diff --git a/src/main/java/com/stumeet/server/member/adapter/out/persistence/MemberPersistenceAdapter.java b/src/main/java/com/stumeet/server/member/adapter/out/persistence/MemberPersistenceAdapter.java index 2d4bf852..4d9fb821 100644 --- a/src/main/java/com/stumeet/server/member/adapter/out/persistence/MemberPersistenceAdapter.java +++ b/src/main/java/com/stumeet/server/member/adapter/out/persistence/MemberPersistenceAdapter.java @@ -1,10 +1,13 @@ package com.stumeet.server.member.adapter.out.persistence; import com.stumeet.server.common.annotation.PersistenceAdapter; +import com.stumeet.server.common.exception.model.NotExistsException; +import com.stumeet.server.common.response.ErrorCode; import com.stumeet.server.member.application.port.out.MemberCommandPort; import com.stumeet.server.member.application.port.out.MemberQueryPort; import com.stumeet.server.member.domain.Member; import com.stumeet.server.member.domain.OAuthProvider; +import com.stumeet.server.member.domain.exception.MemberNotExistsException; import lombok.RequiredArgsConstructor; @PersistenceAdapter @@ -36,7 +39,7 @@ public Member getByOAuthProviderId(String oAuthProviderId, OAuthProvider provide @Override public Member getById(Long id) { MemberJpaEntity memberJpaEntity = jpaMemberRepository.findById(id) - .orElseThrow(() -> new IllegalArgumentException("해당하는 ID의 유저가 존재하지 않습니다.")); + .orElseThrow(() -> new MemberNotExistsException("해당하는 ID의 유저가 존재하지 않습니다. 전달받은 id : " + id, ErrorCode.MEMBER_NOT_FOUND)); return memberMapper.toDomain(memberJpaEntity); } diff --git a/src/main/java/com/stumeet/server/member/domain/OAuthProvider.java b/src/main/java/com/stumeet/server/member/domain/OAuthProvider.java index d8d6df15..40155df4 100644 --- a/src/main/java/com/stumeet/server/member/domain/OAuthProvider.java +++ b/src/main/java/com/stumeet/server/member/domain/OAuthProvider.java @@ -1,5 +1,7 @@ package com.stumeet.server.member.domain; +import com.stumeet.server.common.auth.exception.NotExistsOAuthProviderException; +import com.stumeet.server.common.response.ErrorCode; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -17,6 +19,6 @@ public static OAuthProvider findByProvider(String provider) { return Arrays.stream(values()) .filter(p -> p.getProvider().equals(provider)) .findAny() - .orElseThrow(() -> new IllegalArgumentException("알 수 없는 OAuth provider 입니다.")); + .orElseThrow(() -> new NotExistsOAuthProviderException(ErrorCode.NOT_EXIST_OAUTH_PROVIDER)); } } diff --git a/src/main/java/com/stumeet/server/member/domain/exception/MemberNotExistsException.java b/src/main/java/com/stumeet/server/member/domain/exception/MemberNotExistsException.java new file mode 100644 index 00000000..821b8ca3 --- /dev/null +++ b/src/main/java/com/stumeet/server/member/domain/exception/MemberNotExistsException.java @@ -0,0 +1,10 @@ +package com.stumeet.server.member.domain.exception; + +import com.stumeet.server.common.exception.model.NotExistsException; +import com.stumeet.server.common.response.ErrorCode; + +public class MemberNotExistsException extends NotExistsException { + public MemberNotExistsException(String message, ErrorCode errorCode) { + super(message, errorCode); + } +}