application-tracer

added usersession info to trace

12/2/2018 7:37:28 AM

Details

diff --git a/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java b/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
index d4cc0c8..a8694fc 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
@@ -90,7 +90,8 @@ public class TracerAspect {
             } catch (Exception ex) {
                 instance = "s";
             }
-            Trace trace = new TraceConcrete(instance, Arrays.asList(modifiers), returnValue, methodName, parameters, startTime, endTime);
+            String userId = getUserId();
+            Trace trace = new TraceConcrete(instance, Arrays.asList(modifiers), returnValue, methodName, parameters, startTime, endTime, userId);
             String tracesPath = System.getenv("TRACER_TRACES");
             if (tracesPath == null) {
                 tracesPath = "./traces";
@@ -114,4 +115,15 @@ public class TracerAspect {
         }
         return proceed;
     }
+
+    private String getUserId() {
+        try {
+            Object contextHolder = Class.forName("org.springframework.security.core.context.SecurityContextHolder").newInstance();
+            Object context = contextHolder.getClass().getMethod("getContext").invoke(contextHolder);
+            Object auth = context.getClass().getMethod("getAuthentication").invoke(context);
+            return (String) auth.getClass().getMethod("getName").invoke(auth);
+        } catch (Exception ex) {
+            return "";
+        }
+    }
 }