From d1111261b03f7762e903724599fbf84eaa3a2d48 Mon Sep 17 00:00:00 2001 From: evernat Date: Sat, 28 Nov 2015 18:45:05 +0100 Subject: [PATCH] fix username in the list of http sessions --- .../net/bull/javamelody/NodesController.java | 5 ++++ .../monitoring/HudsonMonitoringFilter.java | 23 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/bull/javamelody/NodesController.java b/src/main/java/net/bull/javamelody/NodesController.java index 78f43b4..2fdd14b 100644 --- a/src/main/java/net/bull/javamelody/NodesController.java +++ b/src/main/java/net/bull/javamelody/NodesController.java @@ -54,6 +54,11 @@ * @author Emeric Vernat */ public class NodesController { + /** + * For HudsonMonitoringFilter. + */ + public static final String SESSION_REMOTE_USER = SessionInformations.SESSION_REMOTE_USER; + private final Collector collector; private final String nodeName; private final List lastJavaInformationsList; diff --git a/src/main/java/org/jvnet/hudson/plugins/monitoring/HudsonMonitoringFilter.java b/src/main/java/org/jvnet/hudson/plugins/monitoring/HudsonMonitoringFilter.java index 6c3cf71..abb2f72 100644 --- a/src/main/java/org/jvnet/hudson/plugins/monitoring/HudsonMonitoringFilter.java +++ b/src/main/java/org/jvnet/hudson/plugins/monitoring/HudsonMonitoringFilter.java @@ -29,6 +29,7 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import jenkins.model.Jenkins; import net.bull.javamelody.NodesCollector; @@ -96,7 +97,11 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha return; } - super.doFilter(request, response, chain); + try { + super.doFilter(request, response, chain); + } finally { + putUserInfoInSession(httpRequest); + } } private boolean hasInvalidParameters(ServletRequest request) { @@ -113,6 +118,22 @@ private boolean hasInvalidParameters(ServletRequest request) { return false; } + private void putUserInfoInSession(HttpServletRequest httpRequest) { + final HttpSession session = httpRequest.getSession(false); + if (session == null) { + // la session n'est pas encore créée (et ne le sera peut-être jamais) + return; + } + if (session.getAttribute(NodesController.SESSION_REMOTE_USER) == null) { + // login utilisateur, peut être null + // dans Jenkins, pas remoteUser = httpRequest.getRemoteUser(); + final String remoteUser = Jenkins.getAuthentication().getName(); + if (remoteUser != null) { + session.setAttribute(NodesController.SESSION_REMOTE_USER, remoteUser); + } + } + } + /** * Generate a report *