add spring security and token management

This commit is contained in:
dirgantarasiahaan
2023-05-23 19:42:51 +07:00
parent 597d4062c7
commit c76c01a174
35 changed files with 1095 additions and 53 deletions
@@ -0,0 +1,39 @@
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));
}
}