[Yanel-commits] rev 30795 - public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/security/impl

michi at wyona.com michi at wyona.com
Sat Jan 26 16:27:02 CET 2008


Author: michi
Date: 2008-01-26 16:27:02 +0100 (Sat, 26 Jan 2008)
New Revision: 30795

Modified:
   public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/security/impl/DefaultWebAuthenticatorImpl.java
Log:
add current user id to login screen in case it actually exists

Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/security/impl/DefaultWebAuthenticatorImpl.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/security/impl/DefaultWebAuthenticatorImpl.java	2008-01-26 15:04:19 UTC (rev 30794)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/security/impl/DefaultWebAuthenticatorImpl.java	2008-01-26 15:27:02 UTC (rev 30795)
@@ -141,6 +141,7 @@
                         }
                         identityMap.put(realm.getID(), new Identity(user));
                         // OpenID authentication successful, hence return null instead an "exceptional" response
+                        // TODO: Do not return null (although successful), but rather strip-off all the openid query string stuff and then do a redirect
                         return null;
                     } else {
                         log.error("No openid.identity!");
@@ -373,6 +374,12 @@
             Element realmElement = (Element) rootElement.appendChild(adoc.createElementNS(YanelServlet.NAMESPACE, "realm"));
             realmElement.setAttributeNS(YanelServlet.NAMESPACE, "name", realm.getName());
             realmElement.setAttributeNS(YanelServlet.NAMESPACE, "mount-point", realm.getMountPoint().toString());  
+
+            String currentUserId = getCurrentUserId(request, realm);
+            if (currentUserId != null) {
+                Element userElement = (Element) rootElement.appendChild(adoc.createElementNS(YanelServlet.NAMESPACE, "user"));
+                userElement.setAttributeNS(YanelServlet.NAMESPACE, "id", currentUserId);
+            }
             
             Element sslElement = (Element) rootElement.appendChild(adoc.createElementNS(YanelServlet.NAMESPACE, "ssl"));            
             if(sslPort != null) {
@@ -532,4 +539,16 @@
                 // see AuthenticationResult result = joid.authenticate(convertToStringValueMap(servletRequest.getParameterMap())); (src/org/verisign/joid/consumer/OpenIdFilter.java)
                 // https://127.0.0.1:8443/yanel/foaf/login.html?openid.sig=2%2FjpOdpJpEMfibrb9v9OHuzm0kg%3D&openid.mode=id_res&openid.return_to=https%3A%2F%2F127.0.0.1%3A8443%2Fyanel%2Ffoaf%2Flogin.html&openid.identity=http%3A%2F%2Fopenid.claimid.com%2Fmichi&openid.signed=identity%2Creturn_to%2Cmode&openid.assoc_handle=%7BHMAC-SHA1%7D%7B47967654%7D%7BB8gYrw%3D%3D%7D
 */
+
+    /**
+     * Get current user id. Return null if not signed in yet.
+     */
+    String getCurrentUserId(HttpServletRequest request, Realm realm) {
+        IdentityMap identityMap = (IdentityMap)request.getSession(true).getAttribute(YanelServlet.IDENTITY_MAP_KEY);
+        if (identityMap != null) {
+            Identity identity = (Identity) identityMap.get(realm.getID());
+            if (identity != null && !identity.isWorld()) return identity.getUsername();
+        }
+        return null;
+    }
 }



More information about the Yanel-commits mailing list