Skip to content

Commit

Permalink
#31 [Update] 권한이 다를 때 (user, admin) 예외 처리
Browse files Browse the repository at this point in the history
  • Loading branch information
Anna-Jin committed Jul 28, 2022
1 parent 9162ccf commit 03287a0
Showing 1 changed file with 18 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.mpnp.baechelin.login.jwt.handler;

import com.google.gson.JsonObject;
import com.mpnp.baechelin.exception.ErrorCode;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.web.access.AccessDeniedHandler;
Expand All @@ -9,6 +11,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;

// 정상적인 JWT 가 왔지만 권한이 부족한 경우 예외 처리. SecurityConfig 에서 사용됨.
@Component
Expand All @@ -22,6 +25,20 @@ public void handle(
HttpServletRequest request,
HttpServletResponse response,
AccessDeniedException accessDeniedException) throws IOException {
handlerExceptionResolver.resolveException(request, response, null, accessDeniedException);
setResponse(response);
}

private void setResponse(HttpServletResponse response) throws IOException {
response.setContentType("application/json;charset=UTF-8");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);

JsonObject responseJson = new JsonObject();
responseJson.addProperty("timestamp", String.valueOf(LocalDateTime.now()));
responseJson.addProperty("status", ErrorCode.ACCESS_DENIED.getStatus());
responseJson.addProperty("code", ErrorCode.ACCESS_DENIED.getCode());
responseJson.addProperty("error", ErrorCode.ACCESS_DENIED.name());
responseJson.addProperty("message", ErrorCode.ACCESS_DENIED.getMessage());

response.getWriter().print(responseJson);
}
}

0 comments on commit 03287a0

Please sign in to comment.