package io.github.logger.controller.utils; import javax.annotation.Nullable; import javax.servlet.http.HttpServletRequest; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import io.github.logger.controller.bean.RequestContext; public class RequestUtil { public RequestContext getRequestContext() { HttpServletRequest request = getCurrentHttpRequest(); return new RequestContext() .add("url", getRequestUrl(request)) .add("username", getRequestUserName()); } @Nullable private String getRequestUrl(@Nullable HttpServletRequest request) { return request == null ? null : request.getRequestURL().toString(); } @Nullable private String getRequestUserName(@Nullable UserDetails userDetails) { return userDetails == null ? null : userDetails.getUsername(); } @Nullable private String getRequestUserName() { return SecurityContextHolder.getContext().getAuthentication().getName(); } @Nullable private HttpServletRequest getCurrentHttpRequest() { HttpServletRequest request = null; RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); if (requestAttributes != null && requestAttributes instanceof ServletRequestAttributes) { request = ((ServletRequestAttributes)requestAttributes).getRequest(); } return request; } @Nullable private UserDetails getCurrentUser() { UserDetails user = null; Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Object principal = null; if (authentication != null) { principal = authentication.getPrincipal(); } if (principal != null && principal instanceof UserDetails) { user = (UserDetails)principal; } return user; } }