Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/main/java/Gotcha/common/exception/ExceptionRes.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,23 @@
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public record ExceptionRes(
String code,
HttpStatus status,
String message,
Map<String, String> fields
) {
public static ExceptionRes from(ExceptionCode error){
return ExceptionRes.builder()
.status(error.getStatus())
.code(error.getCode())
.message(error.getMessage())
.build();
}

public static ExceptionRes from(ExceptionCode error, Map<String, String> fields) {
return ExceptionRes.builder()
.status(error.getStatus())
.code(error.getCode())
.message(error.getMessage())
.fields(fields)
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import org.springframework.http.HttpStatus;

public interface ExceptionCode {
String getCode();
HttpStatus getStatus();
String getMessage();
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,27 @@

@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
public HttpStatus getStatus() {
return status;
}

@Override
public String getCode() {
return code;
}

@Override
public String getMessage() {
return message;
}
}
}
28 changes: 16 additions & 12 deletions src/main/java/Gotcha/common/jwt/exception/JwtExceptionCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,24 @@

@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
public HttpStatus getStatus() {
return status;
}

@Override
public String getCode() {
return code;
}

@Override
public String getMessage() {
return message;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,24 @@
@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
public HttpStatus getStatus() {
return status;
}

@Override
public String getCode() {
return code;
}

@Override
public String getMessage() {
return message;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,23 @@
@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
public HttpStatus getStatus() {
return status;
}

@Override
public String getCode() {
return code;
}

@Override
public String getMessage() {
return message;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,25 @@
@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
public HttpStatus getStatus() {
return status;
}

@Override
public String getCode() {
return code;
}

@Override
public String getMessage() {
return message;
Expand Down
Loading