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 "";
+ }
+ }
}