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)); } }