diff --git a/src/main/java/Gotcha/common/exception/ExceptionRes.java b/src/main/java/Gotcha/common/exception/ExceptionRes.java index dab4ebcd..a46cc71e 100644 --- a/src/main/java/Gotcha/common/exception/ExceptionRes.java +++ b/src/main/java/Gotcha/common/exception/ExceptionRes.java @@ -10,6 +10,7 @@ @Builder @JsonInclude(JsonInclude.Include.NON_NULL) public record ExceptionRes( + String code, HttpStatus status, String message, Map fields @@ -17,6 +18,7 @@ public record ExceptionRes( public static ExceptionRes from(ExceptionCode error){ return ExceptionRes.builder() .status(error.getStatus()) + .code(error.getCode()) .message(error.getMessage()) .build(); } @@ -24,6 +26,7 @@ public static ExceptionRes from(ExceptionCode error){ public static ExceptionRes from(ExceptionCode error, Map fields) { return ExceptionRes.builder() .status(error.getStatus()) + .code(error.getCode()) .message(error.getMessage()) .fields(fields) .build(); diff --git a/src/main/java/Gotcha/common/exception/exceptionCode/ExceptionCode.java b/src/main/java/Gotcha/common/exception/exceptionCode/ExceptionCode.java index 047b723b..489df5d7 100644 --- a/src/main/java/Gotcha/common/exception/exceptionCode/ExceptionCode.java +++ b/src/main/java/Gotcha/common/exception/exceptionCode/ExceptionCode.java @@ -3,6 +3,7 @@ import org.springframework.http.HttpStatus; public interface ExceptionCode { + String getCode(); HttpStatus getStatus(); String getMessage(); } diff --git a/src/main/java/Gotcha/common/exception/exceptionCode/GlobalExceptionCode.java b/src/main/java/Gotcha/common/exception/exceptionCode/GlobalExceptionCode.java index edb3dbaf..ca804976 100644 --- a/src/main/java/Gotcha/common/exception/exceptionCode/GlobalExceptionCode.java +++ b/src/main/java/Gotcha/common/exception/exceptionCode/GlobalExceptionCode.java @@ -5,13 +5,13 @@ @AllArgsConstructor public enum GlobalExceptionCode implements ExceptionCode { - - INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "서버 에러입니다. 서버 팀에 연락주세요."), - FIELD_VALIDATION_ERROR(HttpStatus.BAD_REQUEST, "필드 검증 오류입니다."), - CSRF_INVALID(HttpStatus.FORBIDDEN, "CSRF 토큰이 올바르지 않습니다."), - USER_NOT_FOUND(HttpStatus.UNAUTHORIZED, "해당 사용자를 찾을 수 없습니다."); + INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "GLOBAL-500-001", "서버 에러입니다. 서버 팀에 문의해주세요."), + FIELD_VALIDATION_ERROR(HttpStatus.BAD_REQUEST, "GLOBAL-400-001", "요청한 필드 값이 유효하지 않습니다."), + CSRF_INVALID(HttpStatus.FORBIDDEN, "GLOBAL-403-001", "CSRF 토큰이 유효하지 않습니다."), + USER_NOT_FOUND(HttpStatus.UNAUTHORIZED, "AUTH-401-001", "인증된 사용자를 찾을 수 없습니다."); private final HttpStatus status; + private final String code; private final String message; @Override @@ -19,8 +19,13 @@ public HttpStatus getStatus() { return status; } + @Override + public String getCode() { + return code; + } + @Override public String getMessage() { return message; } -} \ No newline at end of file +} diff --git a/src/main/java/Gotcha/common/jwt/exception/JwtExceptionCode.java b/src/main/java/Gotcha/common/jwt/exception/JwtExceptionCode.java index 2e8a909b..fc43d10d 100644 --- a/src/main/java/Gotcha/common/jwt/exception/JwtExceptionCode.java +++ b/src/main/java/Gotcha/common/jwt/exception/JwtExceptionCode.java @@ -8,28 +8,32 @@ @AllArgsConstructor @ToString public enum JwtExceptionCode implements ExceptionCode { - ACCESS_TOKEN_EXPIRED(HttpStatus.UNAUTHORIZED, "Access Token이 만료되었습니다."), - REFRESH_TOKEN_EXPIRED(HttpStatus.UNAUTHORIZED, "Refresh Token이 만료되었습니다."), - INVALID_TOKEN_SIGNATURE(HttpStatus.UNAUTHORIZED, "Access Token의 서명이 잘못되었습니다."), - ACCESS_TOKEN_NOT_FOUND(HttpStatus.UNAUTHORIZED, "Access Token을 찾을 수 없습니다."), - REFRESH_TOKEN_NOT_FOUND(HttpStatus.UNAUTHORIZED, "Refresh Token을 찾을 수 없습니다."), - BLACKLIST_ACCESS_TOKEN(HttpStatus.UNAUTHORIZED, "접근 불가한 AccessToken입니다."), - INVALID_ACCESS_TOKEN(HttpStatus.UNAUTHORIZED, "잘못된 Access Token입니다."), - UNKNOWN_TOKEN_ERROR(HttpStatus.UNAUTHORIZED, "알 수 없는 토큰 에러입니다."), - ACCESS_DENIED(HttpStatus.FORBIDDEN, "접근 권한이 없습니다."); - + ACCESS_TOKEN_EXPIRED(HttpStatus.UNAUTHORIZED, "JWT-401-001", "Access Token이 만료되었습니다."), + REFRESH_TOKEN_EXPIRED(HttpStatus.UNAUTHORIZED, "JWT-401-002", "Refresh Token이 만료되었습니다."), + INVALID_TOKEN_SIGNATURE(HttpStatus.UNAUTHORIZED, "JWT-401-003", "Access Token의 서명이 잘못되었습니다."), + ACCESS_TOKEN_NOT_FOUND(HttpStatus.UNAUTHORIZED, "JWT-401-004", "Access Token을 찾을 수 없습니다."), + REFRESH_TOKEN_NOT_FOUND(HttpStatus.UNAUTHORIZED, "JWT-401-005", "Refresh Token을 찾을 수 없습니다."), + BLACKLIST_ACCESS_TOKEN(HttpStatus.UNAUTHORIZED, "JWT-401-006", "접근 불가한 AccessToken입니다."), + INVALID_ACCESS_TOKEN(HttpStatus.UNAUTHORIZED, "JWT-401-007", "잘못된 Access Token입니다."), + UNKNOWN_TOKEN_ERROR(HttpStatus.UNAUTHORIZED, "JWT-401-008", "알 수 없는 토큰 에러입니다."), + ACCESS_DENIED(HttpStatus.FORBIDDEN, "JWT-403-001", "접근 권한이 없습니다."); private final HttpStatus status; + private final String code; private final String message; - @Override public HttpStatus getStatus() { return status; } + @Override + public String getCode() { + return code; + } + @Override public String getMessage() { return message; } -} \ No newline at end of file +} diff --git a/src/main/java/Gotcha/common/mail/exception/MailExceptionCode.java b/src/main/java/Gotcha/common/mail/exception/MailExceptionCode.java index 0f4c10a9..d38c3b0c 100644 --- a/src/main/java/Gotcha/common/mail/exception/MailExceptionCode.java +++ b/src/main/java/Gotcha/common/mail/exception/MailExceptionCode.java @@ -6,11 +6,12 @@ @RequiredArgsConstructor public enum MailExceptionCode implements ExceptionCode { - ALREADY_MAIL_REQUEST(HttpStatus.TOO_MANY_REQUESTS,"이미 메일을 요청하셨습니다."), - CODE_EXPIRED(HttpStatus.BAD_REQUEST,"인증번호가 만료되었습니다."), - INVALID_CODE(HttpStatus.BAD_REQUEST,"인증번호가 일치하지 않습니다."); + ALREADY_MAIL_REQUEST(HttpStatus.TOO_MANY_REQUESTS, "MAIL-429-001", "이미 메일을 요청하셨습니다."), + CODE_EXPIRED(HttpStatus.BAD_REQUEST, "MAIL-400-001", "인증번호가 만료되었습니다."), + INVALID_CODE(HttpStatus.BAD_REQUEST, "MAIL-400-002", "인증번호가 일치하지 않습니다."); private final HttpStatus status; + private final String code; private final String message; @Override @@ -18,6 +19,11 @@ public HttpStatus getStatus() { return status; } + @Override + public String getCode() { + return code; + } + @Override public String getMessage() { return message; diff --git a/src/main/java/Gotcha/domain/auth/exception/AuthExceptionCode.java b/src/main/java/Gotcha/domain/auth/exception/AuthExceptionCode.java index f406340b..ccec60cb 100644 --- a/src/main/java/Gotcha/domain/auth/exception/AuthExceptionCode.java +++ b/src/main/java/Gotcha/domain/auth/exception/AuthExceptionCode.java @@ -7,11 +7,12 @@ @AllArgsConstructor public enum AuthExceptionCode implements ExceptionCode { - INVALID_USERNAME_AND_PASSWORD(HttpStatus.NOT_FOUND, "아이디 또는 비밀번호가 유효하지 않습니다."), - INVALID_GUEST(HttpStatus.BAD_REQUEST, "게스트가 아닙니다."), - INVALID_USERID(HttpStatus.NOT_FOUND, "존재하지 않는 사용자입니다."); + INVALID_USERNAME_AND_PASSWORD(HttpStatus.NOT_FOUND, "AUTH-404-001", "아이디 또는 비밀번호가 유효하지 않습니다."), + INVALID_GUEST(HttpStatus.BAD_REQUEST, "AUTH-400-001", "게스트가 아닙니다."), + INVALID_USERID(HttpStatus.NOT_FOUND, "AUTH-404-002", "존재하지 않는 사용자입니다."); private final HttpStatus status; + private final String code; private final String message; @Override @@ -19,6 +20,11 @@ public HttpStatus getStatus() { return status; } + @Override + public String getCode() { + return code; + } + @Override public String getMessage() { return message; diff --git a/src/main/java/Gotcha/domain/notification/exception/NotificationExceptionCode.java b/src/main/java/Gotcha/domain/notification/exception/NotificationExceptionCode.java index 0975056b..5fc902f9 100644 --- a/src/main/java/Gotcha/domain/notification/exception/NotificationExceptionCode.java +++ b/src/main/java/Gotcha/domain/notification/exception/NotificationExceptionCode.java @@ -9,10 +9,11 @@ @ToString public enum NotificationExceptionCode implements ExceptionCode { - UNAUTHORIZED_ACTION(HttpStatus.FORBIDDEN, "권한이 없습니다."), - NOT_FOUND(HttpStatus.NOT_FOUND, "존재하지 않는 공지사항입니다."); + UNAUTHORIZED_ACTION(HttpStatus.FORBIDDEN, "NOTI-403-001", "권한이 없습니다."), + NOT_FOUND(HttpStatus.NOT_FOUND, "NOTI-404-001", "존재하지 않는 공지사항입니다."); private final HttpStatus status; + private final String code; private final String message; @Override @@ -20,6 +21,11 @@ public HttpStatus getStatus() { return status; } + @Override + public String getCode() { + return code; + } + @Override public String getMessage() { return message; diff --git a/src/main/java/Gotcha/domain/user/exceptionCode/UserExceptionCode.java b/src/main/java/Gotcha/domain/user/exceptionCode/UserExceptionCode.java index c1682d0d..d9552e65 100644 --- a/src/main/java/Gotcha/domain/user/exceptionCode/UserExceptionCode.java +++ b/src/main/java/Gotcha/domain/user/exceptionCode/UserExceptionCode.java @@ -8,11 +8,13 @@ @AllArgsConstructor @ToString public enum UserExceptionCode implements ExceptionCode { - NICKNAME_EXIST(HttpStatus.CONFLICT, "이미 존재하는 닉네임입니다."), - EMAIL_EXIST(HttpStatus.CONFLICT, "이미 가입된 이메일입니다."), - INVALID_USERID(HttpStatus.NOT_FOUND, "존재하지 않는 사용자입니다."); + + NICKNAME_EXIST(HttpStatus.CONFLICT, "USER-409-001", "이미 존재하는 닉네임입니다."), + EMAIL_EXIST(HttpStatus.CONFLICT, "USER-409-002", "이미 가입된 이메일입니다."), + INVALID_USERID(HttpStatus.NOT_FOUND, "USER-404-001", "존재하지 않는 사용자입니다."); private final HttpStatus status; + private final String code; private final String message; @Override @@ -20,6 +22,11 @@ public HttpStatus getStatus() { return status; } + @Override + public String getCode() { + return code; + } + @Override public String getMessage() { return message;