40 lines
1.5 KiB
Java
40 lines
1.5 KiB
Java
package com.iconplus.smartproc.configuration;
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.iconplus.smartproc.exception.ErrorResponse;
|
|
import com.iconplus.smartproc.util.Constants;
|
|
import lombok.extern.log4j.Log4j2;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.security.access.AccessDeniedException;
|
|
import org.springframework.security.web.access.AccessDeniedHandler;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.IOException;
|
|
|
|
@Component
|
|
@Log4j2
|
|
public class JwtAuthenticationAccessDenied implements AccessDeniedHandler {
|
|
|
|
private static final String DEFAULT_CODE = "30000";
|
|
private static final String DEFAULT_MESSAGE = "Access denied";
|
|
|
|
@Override
|
|
public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AccessDeniedException e) throws IOException {
|
|
|
|
log.error("Access denied, {}", e.getMessage());
|
|
|
|
ErrorResponse errorResponse = new ErrorResponse();
|
|
errorResponse.setCode(DEFAULT_CODE);
|
|
errorResponse.setTitle(Constants.TITLE_INVALID_NEXT_STEP);
|
|
errorResponse.setMessage(DEFAULT_MESSAGE);
|
|
|
|
httpServletResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
|
|
httpServletResponse.setContentType(MediaType.APPLICATION_JSON_VALUE);
|
|
|
|
httpServletResponse.getOutputStream()
|
|
.println(new ObjectMapper().writeValueAsString(errorResponse));
|
|
}
|
|
}
|