diff --git a/src/main/java/com/server/dos/controller/TokenController.java b/src/main/java/com/server/dos/controller/TokenController.java index ce5628c..9ece255 100644 --- a/src/main/java/com/server/dos/controller/TokenController.java +++ b/src/main/java/com/server/dos/controller/TokenController.java @@ -2,6 +2,8 @@ import com.server.dos.config.jwt.JwtProvider; import com.server.dos.dto.TokenDto; +import com.server.dos.exception.custom.TokenException; +import com.server.dos.exception.error.ErrorCode; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @@ -13,11 +15,11 @@ @RestController public class TokenController { - private JwtProvider jwtProvider; + private final JwtProvider jwtProvider; @GetMapping("/token/expired") public String auth(){ - throw new RuntimeException(); + throw new TokenException(ErrorCode.UNAUTHORIZED,"토큰이 만료되었습니다."); } @GetMapping("/token/refresh") @@ -32,9 +34,17 @@ public String refreshAuth(HttpServletRequest request, HttpServletResponse respon response.addHeader("Refresh", newToken.getRefreshToken()); response.setContentType("application/json;charset=UTF-8"); + +// String tagUrl = UriComponentsBuilder.fromUriString("http://localhost:3000/login/") +// .queryParam("accesstoken",newToken.getAccessToken()) +// .queryParam("refresh",newToken.getRefreshToken()) +// .build().toUriString(); +// +// +// getRedirectStrategy().sendRedirect(request,response,tagUrl); return "NEW TOKEN"; } - throw new RuntimeException(); + throw new TokenException(ErrorCode.UNAUTHORIZED,"토큰 재발급에 실패하였습니다."); } } diff --git a/src/main/java/com/server/dos/exception/ErrorExceptionHandler.java b/src/main/java/com/server/dos/exception/ErrorExceptionHandler.java index 9d45996..5fe60fd 100644 --- a/src/main/java/com/server/dos/exception/ErrorExceptionHandler.java +++ b/src/main/java/com/server/dos/exception/ErrorExceptionHandler.java @@ -1,6 +1,7 @@ package com.server.dos.exception; import com.server.dos.exception.custom.OrderException; +import com.server.dos.exception.custom.TokenException; import com.server.dos.exception.error.ErrorResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DataIntegrityViolationException; @@ -24,4 +25,11 @@ public ResponseEntity handleMeetingException(OrderException ex) { ErrorResponse response = new ErrorResponse(ex.getErrorCode().getCode(), ex.getErrorMessage()); return new ResponseEntity<>(response, ex.getErrorCode().getStatus()); } + + @ExceptionHandler + public ResponseEntity handleTokenException(TokenException tx) { + log.error("Token Exception", tx); + ErrorResponse response = new ErrorResponse(tx.getErrorCode().getCode(), tx.getErrorMessage()); + return new ResponseEntity<>(response, tx.getErrorCode().getStatus()); + } } diff --git a/src/main/java/com/server/dos/exception/custom/TokenException.java b/src/main/java/com/server/dos/exception/custom/TokenException.java new file mode 100644 index 0000000..0be1850 --- /dev/null +++ b/src/main/java/com/server/dos/exception/custom/TokenException.java @@ -0,0 +1,15 @@ +package com.server.dos.exception.custom; + +import com.server.dos.exception.error.ErrorCode; +import lombok.Getter; + +@Getter +public class TokenException extends RuntimeException{ + private final ErrorCode errorCode; + private final String errorMessage; + + public TokenException(ErrorCode errorCode, String errorMessage) { + this.errorCode = errorCode; + this.errorMessage = errorMessage; + } +}