advice 다시 원복
This commit is contained in:
@@ -13,7 +13,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.MethodParameter;
|
import org.springframework.core.MethodParameter;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.http.converter.HttpMessageConverter;
|
import org.springframework.http.converter.HttpMessageConverter;
|
||||||
import org.springframework.http.server.ServerHttpRequest;
|
import org.springframework.http.server.ServerHttpRequest;
|
||||||
import org.springframework.http.server.ServerHttpResponse;
|
import org.springframework.http.server.ServerHttpResponse;
|
||||||
@@ -35,7 +34,8 @@ public class ApiResponseAdvice implements ResponseBodyAdvice<Object> {
|
|||||||
private final AuditLogRepository auditLogRepository;
|
private final AuditLogRepository auditLogRepository;
|
||||||
private final MenuService menuService;
|
private final MenuService menuService;
|
||||||
|
|
||||||
@Autowired private ObjectMapper objectMapper;
|
@Autowired
|
||||||
|
private ObjectMapper objectMapper;
|
||||||
|
|
||||||
public ApiResponseAdvice(AuditLogRepository auditLogRepository, MenuService menuService) {
|
public ApiResponseAdvice(AuditLogRepository auditLogRepository, MenuService menuService) {
|
||||||
this.auditLogRepository = auditLogRepository;
|
this.auditLogRepository = auditLogRepository;
|
||||||
@@ -44,20 +44,19 @@ public class ApiResponseAdvice implements ResponseBodyAdvice<Object> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supports(
|
public boolean supports(
|
||||||
MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
|
MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
|
||||||
// ApiResponseDto를 반환하는 경우에만 적용
|
// ApiResponseDto를 반환하는 경우에만 적용
|
||||||
return returnType.getParameterType().equals(ApiResponseDto.class)
|
return returnType.getParameterType().equals(ApiResponseDto.class);
|
||||||
|| returnType.getParameterType().equals(ResponseEntity.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object beforeBodyWrite(
|
public Object beforeBodyWrite(
|
||||||
Object body,
|
Object body,
|
||||||
MethodParameter returnType,
|
MethodParameter returnType,
|
||||||
MediaType selectedContentType,
|
MediaType selectedContentType,
|
||||||
Class<? extends HttpMessageConverter<?>> selectedConverterType,
|
Class<? extends HttpMessageConverter<?>> selectedConverterType,
|
||||||
ServerHttpRequest request,
|
ServerHttpRequest request,
|
||||||
ServerHttpResponse response) {
|
ServerHttpResponse response) {
|
||||||
|
|
||||||
HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();
|
HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();
|
||||||
ContentCachingRequestWrapper contentWrapper = null;
|
ContentCachingRequestWrapper contentWrapper = null;
|
||||||
@@ -72,7 +71,7 @@ public class ApiResponseAdvice implements ResponseBodyAdvice<Object> {
|
|||||||
Long userid = null;
|
Long userid = null;
|
||||||
|
|
||||||
if (servletRequest.getUserPrincipal() instanceof UsernamePasswordAuthenticationToken auth
|
if (servletRequest.getUserPrincipal() instanceof UsernamePasswordAuthenticationToken auth
|
||||||
&& auth.getPrincipal() instanceof CustomUserDetails customUserDetails) {
|
&& auth.getPrincipal() instanceof CustomUserDetails customUserDetails) {
|
||||||
userid = customUserDetails.getMember().getId();
|
userid = customUserDetails.getMember().getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,29 +92,29 @@ public class ApiResponseAdvice implements ResponseBodyAdvice<Object> {
|
|||||||
|
|
||||||
List<?> list = menuService.getFindAll();
|
List<?> list = menuService.getFindAll();
|
||||||
List<MenuDto.Basic> result =
|
List<MenuDto.Basic> result =
|
||||||
list.stream()
|
list.stream()
|
||||||
.map(
|
.map(
|
||||||
item -> {
|
item -> {
|
||||||
if (item instanceof LinkedHashMap<?, ?> map) {
|
if (item instanceof LinkedHashMap<?, ?> map) {
|
||||||
return objectMapper.convertValue(map, MenuDto.Basic.class);
|
return objectMapper.convertValue(map, MenuDto.Basic.class);
|
||||||
} else if (item instanceof MenuDto.Basic dto) {
|
} else if (item instanceof MenuDto.Basic dto) {
|
||||||
return dto;
|
return dto;
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalStateException("Unsupported cache type: " + item.getClass());
|
throw new IllegalStateException("Unsupported cache type: " + item.getClass());
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
AuditLogEntity log =
|
AuditLogEntity log =
|
||||||
new AuditLogEntity(
|
new AuditLogEntity(
|
||||||
userid,
|
userid,
|
||||||
ApiLogFunction.getEventType(servletRequest),
|
ApiLogFunction.getEventType(servletRequest),
|
||||||
ApiLogFunction.isSuccessFail(apiResponse),
|
ApiLogFunction.isSuccessFail(apiResponse),
|
||||||
ApiLogFunction.getUriMenuInfo(result, servletRequest.getRequestURI()),
|
ApiLogFunction.getUriMenuInfo(result, servletRequest.getRequestURI()),
|
||||||
ip,
|
ip,
|
||||||
servletRequest.getRequestURI(),
|
servletRequest.getRequestURI(),
|
||||||
ApiLogFunction.cutRequestBody(requestBody),
|
ApiLogFunction.cutRequestBody(requestBody),
|
||||||
apiResponse.getErrorLogUid());
|
apiResponse.getErrorLogUid());
|
||||||
auditLogRepository.save(log);
|
auditLogRepository.save(log);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user