From 37d6d63772d57291052017eff4a0bd5681f5e2c4 Mon Sep 17 00:00:00 2001 From: Justin Richer Date: Thu, 23 Aug 2012 18:20:35 -0400 Subject: [PATCH] inject userinfo into context for use in JSPs addresses #99 (for real this time) --- .../connect/web/UserInfoInterceptor.java | 48 +++++++++++++++++++ .../webapp/WEB-INF/application-context.xml | 4 ++ .../src/main/webapp/WEB-INF/tags/topbar.tag | 2 +- 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 openid-connect-server/src/main/java/org/mitre/openid/connect/web/UserInfoInterceptor.java diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/web/UserInfoInterceptor.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/web/UserInfoInterceptor.java new file mode 100644 index 000000000..064b94afd --- /dev/null +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/web/UserInfoInterceptor.java @@ -0,0 +1,48 @@ +/** + * + */ +package org.mitre.openid.connect.web; + +import java.security.Principal; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.mitre.openid.connect.model.UserInfo; +import org.mitre.openid.connect.repository.UserInfoRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +/** + * @author jricher + * + */ +public class UserInfoInterceptor extends HandlerInterceptorAdapter { + + @Autowired + private UserInfoRepository userInfoRepository; + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + + // get our principal + Principal p = request.getUserPrincipal(); + + if (p != null && p.getName() != null) { + + // try to look up a user based on it + UserInfo user = userInfoRepository.getByUserId(p.getName()); + + // if we have one, inject it so views can use it + if (user != null) { + modelAndView.addObject("userInfo", user); + } + } + + } + + + + +} diff --git a/openid-connect-server/src/main/webapp/WEB-INF/application-context.xml b/openid-connect-server/src/main/webapp/WEB-INF/application-context.xml index 7ba55d719..d33933597 100644 --- a/openid-connect-server/src/main/webapp/WEB-INF/application-context.xml +++ b/openid-connect-server/src/main/webapp/WEB-INF/application-context.xml @@ -21,6 +21,10 @@ + + + + diff --git a/openid-connect-server/src/main/webapp/WEB-INF/tags/topbar.tag b/openid-connect-server/src/main/webapp/WEB-INF/tags/topbar.tag index 9608ddb8d..7c570696f 100644 --- a/openid-connect-server/src/main/webapp/WEB-INF/tags/topbar.tag +++ b/openid-connect-server/src/main/webapp/WEB-INF/tags/topbar.tag @@ -21,7 +21,7 @@ - Logged in as <%= request.getUserPrincipal().getName() %> + Logged in as ${ userInfo.preferredUsername }