@ -12,67 +12,71 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory ;
import org.springframework.stereotype.Component ;
import org.springframework.web.filter.OncePerRequestFilter ;
import org.springframework.web.util.ContentCachingResponseWrapper ;
import java.io.IOException ;
import java.net.URLDecoder ;
import java.time.LocalDateTime ;
@Component
public class LoggingActivityFilter extends OncePerRequestFilter {
private static final Logger LOGGER = LoggerFactory . getLogger ( LoggingActivityFilter . class ) ;
private final CustomerProfileRepository customerProfileRepository ;
private final CustomerAccountActivityService cust AccActivityService;
private final CustomerAccountActivityService cust omer Account ActivityService;
public LoggingActivityFilter ( CustomerProfileRepository customerProfileRepository , CustomerAccountActivityService cust AccActivityService) {
public LoggingActivityFilter ( CustomerProfileRepository customerProfileRepository , CustomerAccountActivityService cust omer Account ActivityService) {
this . customerProfileRepository = customerProfileRepository ;
this . cust AccActivityService = cust AccActivityService;
this . cust omer Account ActivityService = cust omer Account ActivityService;
}
@Override
protected void doFilterInternal ( HttpServletRequest request , HttpServletResponse response , FilterChain filterChain ) throws ServletException , IOException {
setAccessControlHeaders ( response ) ;
if ( "OPTIONS" . equalsIgnoreCase ( request . getMethod ( ) ) ) {
response . setStatus ( HttpServletResponse . SC_OK ) ;
} else {
filterChain . doFilter ( request , response ) ;
logRequestDetails ( request , response ) ;
handleUserActivityLogging ( request ) ;
}
}
private void setAccessControlHeaders ( HttpServletResponse response ) {
response . setHeader ( "Access-Control-Allow-Credentials" , "true" ) ;
response . setHeader ( "Access-Control-Allow-Origin" , "*" ) ;
response . setHeader ( "Access-Control-Allow-Headers" , "*" ) ;
response . setHeader ( "Access-Control-Expose-Headers" , "*" ) ;
response . setHeader ( "Access-Control-Allow-Methods" , "GET, POST, PATCH, PUT, DELETE, OPTIONS" ) ;
if ( ! ( request . getMethod ( ) . equals ( "OPTIONS" ) ) ) {
filterChain . doFilter ( request , response ) ;
}
ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper ( response ) ;
LOGGER . info (
"FINISHED PROCESSING: METHOD={}; REQUESTURI={}; RESPONSE CODE={}; IP={};" ,
request . getMethod ( ) ,
request . getRequestURI ( ) ,
response . getStatus ( ) ,
request . getRemoteAddr ( )
) ;
CustomerProfile cust ;
String susUsercode = "" ;
if ( request . getHeader ( "cmpUserId" ) ! = null ) {
susUsercode = URLDecoder . decode ( request . getHeader ( "cmpUserId" ) , "UTF-8" ) ;
private void logRequestDetails ( HttpServletRequest request , HttpServletResponse response ) {
LOGGER . info ( "FINISHED PROCESSING: METHOD={}; REQUESTURI={}; RESPONSE CODE={}; IP={};" ,
request . getMethod ( ) , request . getRequestURI ( ) , response . getStatus ( ) , request . getRemoteAddr ( ) ) ;
}
private void handleUserActivityLogging ( HttpServletRequest request ) {
try {
String susUserCode = request . getHeader ( "cmpUserId" ) ! = null ? URLDecoder . decode ( request . getHeader ( "cmpUserId" ) , "UTF-8" ) : "" ;
String porOrgacode = request . getHeader ( "porOrgacode" ) ;
String email = request . getHeader ( "email" ) ;
String channalCode = request . getHeader ( "channelCode" ) ;
String channelCode = request . getHeader ( "channelCode" ) ;
String deviceName = request . getHeader ( "deviceName" ) ;
String userActivity = request . getHeader ( "userActivity" ) ;
cust = customerProfileRepository . findbyEmail ( porOrgacode , email ) ;
LocalDateTime date = LocalDateTime . now ( ) ;
if ( cust ! = null & & userActivity ! = null ) {
CustomerProfile customer = customerProfileRepository . findbyEmail ( porOrgacode , email ) ;
if ( customer ! = null & & userActivity ! = null ) {
CustomerAccountActivity activity = new CustomerAccountActivity (
null ,
porOrgacode ,
cust . getCmpCustcode ( ) ,
date ,
channa lCode,
cust omer . getCmpCustcode ( ) ,
LocalDateTime . now ( ) ,
channe lCode,
deviceName ,
userActivity ,
cust
cust omer
) ;
custAccActivityService . postCustomerAccountActivity ( activity ) ; ;
customerAccountActivityService . postCustomerAccountActivity ( activity ) ;
}
} catch ( Exception e ) {
LOGGER . error ( "Error logging user activity" , e ) ;
}
}
}