diff --git a/src/main/java/com/example/onederful/domain/log/HttpRequestUtil.java b/src/main/java/com/example/onederful/domain/log/HttpRequestUtil.java index 1c955a2..8d6ce5c 100644 --- a/src/main/java/com/example/onederful/domain/log/HttpRequestUtil.java +++ b/src/main/java/com/example/onederful/domain/log/HttpRequestUtil.java @@ -42,7 +42,11 @@ public RequestInfo getRequestInfo() { String url = request.getRequestURI(); // 토큰으로부터 요청한 사용자의 userId - Long userId = jwtUtil.extractId(request); + Long userId = null; + // 로그인, 회원가입 등 토큰 체크 안 할 URL 처리 + if (!url.startsWith("/api/auth/login") && !url.startsWith("/api/auth/register")) { + userId = jwtUtil.extractId(request); + } return new RequestInfo(ip, enumMethod, url, userId); } diff --git a/src/main/java/com/example/onederful/domain/log/LoggingAspect.java b/src/main/java/com/example/onederful/domain/log/LoggingAspect.java index 174cc3e..ff92320 100644 --- a/src/main/java/com/example/onederful/domain/log/LoggingAspect.java +++ b/src/main/java/com/example/onederful/domain/log/LoggingAspect.java @@ -43,15 +43,15 @@ public void updateTaskStatusMethod() { } // 로그인 시 자동 로그 기록 -// @AfterReturning(pointcut = "loginMethod()", returning = "result") -// public void logLoginMethod(Object result) { -// -// // HttpServletRequest으로부터 요청 ip, 메서드, url -// HttpRequestUtil.RequestInfo request = httpRequestUtil.getRequestInfo(); -// -// // 로그 저장 -// logService.saveLoginLog(request.getIp(), request.getMethod(), request.getUrl(), result); -// } + @AfterReturning(pointcut = "loginMethod()", returning = "result") + public void logLoginMethod(Object result) { + + // HttpServletRequest으로부터 요청 ip, 메서드, url + HttpRequestUtil.RequestInfo request = httpRequestUtil.getRequestInfo(); + + // 로그 저장 + logService.saveLoginLog(request.getIp(), request.getMethod(), request.getUrl(), result); + } // 생성, 수정, 삭제 시 자동 로그 기록 @AfterReturning(pointcut = "cudMethods()", returning = "result") diff --git a/src/main/java/com/example/onederful/domain/log/service/LogService.java b/src/main/java/com/example/onederful/domain/log/service/LogService.java index 669f869..bf23d26 100644 --- a/src/main/java/com/example/onederful/domain/log/service/LogService.java +++ b/src/main/java/com/example/onederful/domain/log/service/LogService.java @@ -9,6 +9,7 @@ import com.example.onederful.domain.log.repository.LogRepository; import com.example.onederful.domain.log.repository.LogSpecification; import com.example.onederful.domain.task.dto.response.TaskResponse; +import com.example.onederful.domain.user.dto.Tokeninfo; import com.example.onederful.domain.user.entity.User; import com.example.onederful.domain.user.repository.UserRepository; import com.example.onederful.exception.CustomException; @@ -65,38 +66,38 @@ public LogsResponse findLog( } // 로그인 시 로그 기록 -// @Transactional -// public void saveLoginLog(String ip, Method method, String url, Object result) { -// // userId -// Long userId = null; -// if (result instanceof Tokeninfo) { -// String token = ((Tokeninfo) result).getToken(); -// userId = jwtUtil.extractAllClaims(token).get("id", Long.class); -// } -// -// // 현재 유저 조회 -// User user = userRepositry.findById(userId).orElseThrow( -// () -> new CustomException(ErrorCode.UNAUTHORIZED) -// ); -// -// // 활동 유형 -// Activity activity = Activity.USER_LOGGED_IN; -// -// // 대상 id -// Long targetId = userId; -// -// // 로그 DB에 저장 -// Log log = Log.builder() -// .user(user) -// .activity(activity) -// .ipAddress(ip) -// .method(method) -// .targetId(targetId) -// .requestUrl(url) -// .build(); -// -// logRepository.save(log); -// } + @Transactional + public void saveLoginLog(String ip, Method method, String url, Object result) { + // userId + Long userId = null; + if (result instanceof Tokeninfo) { + String token = ((Tokeninfo) result).getToken(); + userId = jwtUtil.extractAllClaims(token).get("id", Long.class); + } + + // 현재 유저 조회 + User user = userRepositry.findById(userId).orElseThrow( + () -> new CustomException(ErrorCode.UNAUTHORIZED) + ); + + // 활동 유형 + Activity activity = Activity.USER_LOGGED_IN; + + // 대상 id + Long targetId = userId; + + // 로그 DB에 저장 + Log log = Log.builder() + .user(user) + .activity(activity) + .ipAddress(ip) + .method(method) + .targetId(targetId) + .requestUrl(url) + .build(); + + logRepository.save(log); + } // 생성, 수정, 삭제 시 로그 기록 @Transactional