diff --git a/src/main/java/com/kamco/cd/kamcoback/auth/CustomAuthenticationProvider.java b/src/main/java/com/kamco/cd/kamcoback/auth/CustomAuthenticationProvider.java index c9228a3f..ad216577 100644 --- a/src/main/java/com/kamco/cd/kamcoback/auth/CustomAuthenticationProvider.java +++ b/src/main/java/com/kamco/cd/kamcoback/auth/CustomAuthenticationProvider.java @@ -21,11 +21,10 @@ import org.springframework.web.context.request.ServletRequestAttributes; @RequiredArgsConstructor public class CustomAuthenticationProvider implements AuthenticationProvider { + private final MembersRepository membersRepository; ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - private final MembersRepository membersRepository; - @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { String username = authentication.getName(); @@ -61,7 +60,7 @@ public class CustomAuthenticationProvider implements AuthenticationProvider { // front에서 전달한 사용자 ip 등록 HttpServletRequest req = (attr != null) ? attr.getRequest() : null; - String ip = (req != null) ? HeaderUtil.get(req, "kamco-userIp") : null; + String ip = (req != null) ? HeaderUtil.get(req, "kamco-user-ip") : null; UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); diff --git a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiLogFunction.java b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiLogFunction.java index f9b48d09..8acefce9 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiLogFunction.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiLogFunction.java @@ -35,6 +35,14 @@ public class ApiLogFunction { return ip; } + public static String getXFowardedForIp(HttpServletRequest request) { + String ip = request.getHeader("X-Forwarded-For"); + if (ip != null) { + ip = ip.split(",")[0].trim(); + } + return ip; + } + // 사용자 ID 추출 예시 (Spring Security 기준) public static String getUserId(HttpServletRequest request) { try { @@ -53,15 +61,15 @@ public class ApiLogFunction { return EventType.DOWNLOAD; } if (uri.contains("/print")) { - return EventType.PRINT; + return EventType.OTHER; } // 일반 CRUD return switch (method) { - case "POST" -> EventType.CREATE; - case "GET" -> EventType.READ; - case "DELETE" -> EventType.DELETE; - case "PUT", "PATCH" -> EventType.UPDATE; + case "POST" -> EventType.ADDED; + case "GET" -> EventType.LIST; + case "DELETE" -> EventType.REMOVE; + case "PUT", "PATCH" -> EventType.MODIFIED; default -> EventType.OTHER; }; } diff --git a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java index 72cb50bc..41076e3f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java @@ -66,7 +66,7 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { if (body instanceof ApiResponseDto apiResponse) { response.setStatusCode(apiResponse.getHttpStatus()); - String ip = ApiLogFunction.getClientIp(servletRequest); + String ip = ApiLogFunction.getXFowardedForIp(servletRequest); Long userid = null; if (servletRequest.getUserPrincipal() instanceof UsernamePasswordAuthenticationToken auth diff --git a/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java b/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java index 2f923681..bad76c10 100644 --- a/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java +++ b/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java @@ -7,16 +7,27 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum EventType implements EnumType { - CREATE("생성"), - READ("조회"), - UPDATE("수정"), - DELETE("삭제"), + LIST("목록"), + DETAIL("상세"), + POPUP("팝업"), + STATUS("상태"), + ADDED("추가"), + MODIFIED("수정"), + REMOVE("삭제"), DOWNLOAD("다운로드"), - PRINT("출력"), + LOGIN("로그인"), OTHER("기타"); private final String desc; + public static EventType fromName(String name) { + try { + return EventType.valueOf(name.toUpperCase()); + } catch (Exception e) { + return OTHER; + } + } + @Override public String getId() { return name();