Author: channa
Date: Tue Jul  8 22:54:55 2008
New Revision: 19006
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=19006

Log:
Adding 'remember me' option for OpenId users. MASHUP-837.


Modified:
   trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java
   trunk/mashup/java/modules/core/src/org/wso2/mashup/utils/MashupUtils.java
   
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/identity/IdentityHandler.java
   
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/utils/RegistryUtils.java
   trunk/mashup/java/modules/www/identityaccept.jsp
   trunk/mashup/java/modules/www/index.jsp
   trunk/mashup/java/modules/www/openidsubmit.jsp
   trunk/mashup/java/modules/www/signin.jsp
   trunk/mashup/java/modules/www/signout.jsp
   trunk/mashup/java/modules/www/validate_login.jsp

Modified: 
trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java
URL: 
http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java?rev=19006&r1=19005&r2=19006&view=diff
==============================================================================
--- trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java     
(original)
+++ trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java     
Tue Jul  8 22:54:55 2008
@@ -290,4 +290,10 @@
 
     // Default number of entries shows when displaying a paginated list of 
items. 
     public static final int DEFAULT_PAGE_SIZE = 10;
+
+    //  Used to persist the remember me option.
+    public static final String REMEMBER_OPENID = "rememberopenid";
+
+    //  Used to persist the period of time OpenId is remembered.
+    public static final String REMEMBER_OPENID_FOREVER = 
"rememberopenidforever";
 }

Modified: 
trunk/mashup/java/modules/core/src/org/wso2/mashup/utils/MashupUtils.java
URL: 
http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/core/src/org/wso2/mashup/utils/MashupUtils.java?rev=19006&r1=19005&r2=19006&view=diff
==============================================================================
--- trunk/mashup/java/modules/core/src/org/wso2/mashup/utils/MashupUtils.java   
(original)
+++ trunk/mashup/java/modules/core/src/org/wso2/mashup/utils/MashupUtils.java   
Tue Jul  8 22:54:55 2008
@@ -1388,4 +1388,29 @@
         StAXOMBuilder builder = new StAXOMBuilder(new 
ByteArrayInputStream(cleanedHTML.getBytes()));
         return builder.getDocumentElement();
     }
+
+    /**
+     * Calculates the period for which the 'remember me' cookie has to be 
retained.
+     * @param rememberForever Whether to remember for an extended period or 
the default time span.
+     * @return time to remember, in seconds.
+     */
+    public static int rememberPeriod(boolean rememberForever) {
+        int expireIn = 0;
+        ServerConfiguration serverConfig = ServerConfiguration.getInstance();
+        String rememberPeriod = 
serverConfig.getFirstProperty(MashupConstants.SESSION_MANAGEMENT
+                + "." + MashupConstants.REMEMBER_ME_PERIOD);
+        if (rememberPeriod != null) {
+            int numDays = 0;
+            try {
+                numDays = Integer.parseInt(rememberPeriod);
+            } catch (NumberFormatException e) {
+            }
+            expireIn = 60 * 60 * 24 * numDays;
+            int longerExpDays = 60 * 60 * 24 * 365 * 2; //2 years
+            if (rememberForever && (numDays <= longerExpDays)) {
+                expireIn = longerExpDays;
+            }
+        }
+        return expireIn;
+    }
 }

Modified: 
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/identity/IdentityHandler.java
URL: 
http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/identity/IdentityHandler.java?rev=19006&r1=19005&r2=19006&view=diff
==============================================================================
--- 
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/identity/IdentityHandler.java
     (original)
+++ 
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/identity/IdentityHandler.java
     Tue Jul  8 22:54:55 2008
@@ -249,14 +249,20 @@
      * @param request HttpServletRequest instance.
      * @param response HttpServletResponse instance.
      */
-    public static void openIDSubmit(HttpServletRequest request, 
HttpServletResponse response) {
+    public static void openIDSubmit(HttpServletRequest request, 
HttpServletResponse response, String redirectTo, String identifier) {
         String calledFrom = request.getParameter("calledfrom");
+        String bounceBack = redirectTo != null ? redirectTo : 
request.getParameter("bounceback");
+        String openIdUrl;
+        String rememberOpenId = 
request.getParameter(MashupConstants.REMEMBER_OPENID);
+        String rememberFroever = 
request.getParameter(MashupConstants.REMEMBER_OPENID_FOREVER);
+        String returnPage;
         try {
             OpenIDAuthenticationRequest openIDAuthReq;
 
             openIDAuthReq = new OpenIDAuthenticationRequest(request, response);
 
-            
openIDAuthReq.setOpenIDUrl(request.getParameter("openid_identifier"));
+            openIdUrl = identifier != null ? identifier : 
request.getParameter("openid_identifier");
+            openIDAuthReq.setOpenIDUrl(openIdUrl);
 
             // you need to set an absolute url as the return url.
             // once the user authenticated successfully or failed at the OpenID
@@ -264,10 +270,36 @@
             StringBuffer returnUrl = new StringBuffer();
             
returnUrl.append(request.getSession().getServletContext().getAttribute(
                     MashupConstants.WEBAPP_URL));
-            returnUrl.append("registration".equals(calledFrom) ? 
"register_self_identity.jsp" :
-                    "identityaccept.jsp");
-            returnUrl.append("?calledfrom=" + calledFrom + "&" + 
MashupConstants.
-                    AUTHENTICATION_METHOD + 
"=openid&FromIdentityProvider=true");
+
+            // Determine target page based on calling page.
+            if ("registration".equals(calledFrom)) {
+                returnPage = "register_self_identity.jsp";
+            } else {
+                returnPage = "identityaccept.jsp";
+            }
+            returnUrl.append(returnPage);
+
+            // If a bounceback URL is not known, set to return to the home 
page.
+            if (bounceBack == null) {
+                bounceBack = "index.jsp";
+            }
+
+            // URL will confirm that this is an openid call from the provider.
+            returnUrl.append("?" + MashupConstants.
+                    AUTHENTICATION_METHOD + 
"=openid&FromIdentityProvider=true&" +
+                    "bounceback=" + bounceBack);
+
+            // Add the caller information if available.
+            if (calledFrom != null) {
+                returnUrl.append("&calledfrom=" + calledFrom);
+            }
+
+            // Add remember-me values to the return URL, if available, to be 
set in cookie.
+            if (rememberOpenId != null) {
+                returnUrl.append("&" + MashupConstants.REMEMBER_OPENID + "=" + 
rememberOpenId + "&"
+                        + MashupConstants.REMEMBER_OPENID_FOREVER + "=" + 
rememberFroever);
+            }
+
             openIDAuthReq.setReturnUrl(returnUrl.toString());
 
             // Use Simple Attribute Registration 1.1

Modified: 
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/utils/RegistryUtils.java
URL: 
http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/utils/RegistryUtils.java?rev=19006&r1=19005&r2=19006&view=diff
==============================================================================
--- 
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/utils/RegistryUtils.java
  (original)
+++ 
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/utils/RegistryUtils.java
  Tue Jul  8 22:54:55 2008
@@ -134,7 +134,7 @@
 
         String userID = userRegistry.getUserName();
 
-        if (!userID.equals(RegistryConstants.ANONYMOUS_USER)) {
+        if (userID != null && 
!userID.equals(RegistryConstants.ANONYMOUS_USER)) {
             return true;
         }
 

Modified: trunk/mashup/java/modules/www/identityaccept.jsp
URL: 
http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/www/identityaccept.jsp?rev=19006&r1=19005&r2=19006&view=diff
==============================================================================
--- trunk/mashup/java/modules/www/identityaccept.jsp    (original)
+++ trunk/mashup/java/modules/www/identityaccept.jsp    Tue Jul  8 22:54:55 2008
@@ -22,12 +22,11 @@
 <%@ page import="org.wso2.mashup.webapp.identity.RegistrationBean" %>
 <%@ page import="org.wso2.solutions.identity.IdentityConstants" %>
 <%@ page import="org.wso2.mashup.MashupConstants" %>
+<%@ page import="org.wso2.mashup.utils.MashupUtils" %>
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
-<!--Required to keep a user logged in if 'Remember Me' option is selected-->
-<%@ include file="validate_login.jsp" %>
-
 <%
+    UserRegistry userRegistry = RegistryUtils.getRegistry(request);
     ResourceBundle bundle = ResourceBundle.getBundle("UI");                  
 
     boolean isLoggedIn = RegistryUtils.isLoggedIn(userRegistry);
@@ -62,10 +61,31 @@
             message = "Could not add Identifier to user profile.";
        }
     } else {
-        // Unauthenticated users are trying to sign in.
+         // Unauthenticated users are trying to sign in.
          title = "Sign-in to " + bundle.getString("main.title");
         if (IdentityHandler.signIn(request)) {
-               response.sendRedirect(bounceback);
+            //Saving the openid option to be remembered.
+            if (MashupConstants.TRUE
+                    
.equals(request.getParameter(MashupConstants.REMEMBER_OPENID))) {
+                int openIdExpire;
+                
+                // Setting the openId Cookie.
+                String openId =
+                        (String) 
request.getAttribute(IdentityConstants.OpenId.OPENID_IDENTIFIER);
+                boolean rememberForever = Boolean.parseBoolean(
+                        
request.getParameter(MashupConstants.REMEMBER_OPENID_FOREVER));
+                openIdExpire = MashupUtils.rememberPeriod(rememberForever);
+                Cookie openIdCookie = new 
Cookie(MashupConstants.REMEMBER_OPENID, openId);
+                openIdCookie.setMaxAge(openIdExpire);
+                openIdCookie.setSecure(true);
+                response.addCookie(openIdCookie);
+
+                //Saving the remember me option.
+                Cookie rememberMeCookie = new Cookie("rememberMe", "true");
+                rememberMeCookie.setMaxAge(openIdExpire);
+                response.addCookie(rememberMeCookie);
+            }
+            response.sendRedirect(bounceback);
             return;
         } else {
             message = "Identifier based login failed." +

Modified: trunk/mashup/java/modules/www/index.jsp
URL: 
http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/www/index.jsp?rev=19006&r1=19005&r2=19006&view=diff
==============================================================================
--- trunk/mashup/java/modules/www/index.jsp     (original)
+++ trunk/mashup/java/modules/www/index.jsp     Tue Jul  8 22:54:55 2008
@@ -47,6 +47,9 @@
                 } else if (curCookie.getName().equalsIgnoreCase("password")) {
                     curCookie.setMaxAge(0);
                     response.addCookie(curCookie);
+                } else if 
(curCookie.getName().equalsIgnoreCase(MashupConstants.REMEMBER_OPENID)) {
+                    curCookie.setMaxAge(0);
+                    response.addCookie(curCookie);
                 }
             }
         }

Modified: trunk/mashup/java/modules/www/openidsubmit.jsp
URL: 
http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/www/openidsubmit.jsp?rev=19006&r1=19005&r2=19006&view=diff
==============================================================================
--- trunk/mashup/java/modules/www/openidsubmit.jsp      (original)
+++ trunk/mashup/java/modules/www/openidsubmit.jsp      Tue Jul  8 22:54:55 2008
@@ -15,5 +15,5 @@
 --%>
 <%@ page import="org.wso2.mashup.webapp.identity.IdentityHandler" %>
 <%
-    IdentityHandler.openIDSubmit(request, response);
+    IdentityHandler.openIDSubmit(request, response, null, null);
 %>
\ No newline at end of file

Modified: trunk/mashup/java/modules/www/signin.jsp
URL: 
http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/www/signin.jsp?rev=19006&r1=19005&r2=19006&view=diff
==============================================================================
--- trunk/mashup/java/modules/www/signin.jsp    (original)
+++ trunk/mashup/java/modules/www/signin.jsp    Tue Jul  8 22:54:55 2008
@@ -48,7 +48,6 @@
     String passwordProvided = request.getParameter("password");
     String rememberMe = request.getParameter("rememberme");
     String rememberMeForever = request.getParameter("remembermeforever");
-
     if (firsttime != null) {
         // Prevent login using default profiles.
         if (nameProvided.equals(MashupConstants.SAMPLES_USER) ||
@@ -143,9 +142,11 @@
         function setRememberMe() {
             var val = document.getElementById("chkRemember").checked;
             var remMe = document.getElementById("rememberme");
+            var remOpenId = document.getElementById("<%= 
MashupConstants.REMEMBER_OPENID %>");
 
             if (val) {
                 remMe.value = "true";
+                remOpenId.value = "true";
             } else {
                 remMe.value = "false";
                 document.getElementById("chkRememberForever").checked = false;
@@ -159,11 +160,14 @@
 
             var val = document.getElementById("chkRememberForever").checked;
             var remMeForever = document.getElementById("remembermeforever");
+            var remOpenIdForever = document.getElementById("<%= 
MashupConstants.REMEMBER_OPENID_FOREVER %>");
 
             if (val) {
                 remMeForever.value = "true";
+                remOpenIdForever.value = "true";
             } else {
                 remMeForever.value = "false";
+                remOpenIdForever.value = "false";
             }
         }
 
@@ -184,8 +188,8 @@
                 <tr>
                     <th width="50%">Sign-in to <%= 
bundle.getString("main.title")%>
                     </th>
-                    <th width="25%" nowrap="nowrap">Use InfoCard to 
Sign-in</th>
                     <th width="25%">Use OpenID to Sign-in</th>
+                    <th width="25%" nowrap="nowrap">Use InfoCard to 
Sign-in</th>
                 </tr>
                 <tr>
                     <td height="175">
@@ -195,7 +199,7 @@
                             <input type="hidden" id="rememberme" 
name="rememberme" value="false"/>
                             <input type="hidden" id="remembermeforever" 
name="remembermeforever"
                                    value="false"/>
-                            <br/>                        
+                            <br/>
                         <% if (!success) { %>
                         <div class="error">Invalid user or password. Please 
try again.
                         </div>
@@ -212,7 +216,37 @@
                         <label style="margin-right:10px; 
"><strong>Password:</strong></label><input
                             type="password" name="password" id="password"/>
                         <br/><br/>
-
+                        <div><input
+                                type="submit"
+                                id="signin"
+                                value="Sign In"/>
+                        </div>
+                        </form>
+                    </td>
+                    <td height="175" valign="top">
+                        <form name="openidsignin" id="openidsignin" 
method="post" action="openidsubmit.jsp">
+                            <img src="images/openid-logo.jpg" border="0"><br/>
+                            Enter Your OpenID Url:<input type="text" 
name="openid_identifier" value="<%= MashupConstants.OPENID_URL_PREFIX %>"/>
+                            <input type="hidden" id="<%= 
MashupConstants.REMEMBER_OPENID %>" name="<%= MashupConstants.REMEMBER_OPENID 
%>" value="false"/>
+                            <input type="hidden" id="<%= 
MashupConstants.REMEMBER_OPENID_FOREVER %>" name="<%= 
MashupConstants.REMEMBER_OPENID_FOREVER %>" value="false"/>
+                            <input type="hidden" name="calledfrom" 
value="signin"/>
+                            <input type="hidden" name="bounceback" value="<%= 
bounceback %>"/>
+                            <input type="submit" name="submit" value="Login" />
+                        </form>
+                        <br/>
+                        <br/>
+                    </td>
+                    <td height="175" valign="top">
+                        <a 
href="infocard.jsp?bounceback=<%=URLEncoder.encode(bounceback,"UTF-8")%>"><img
+                                src="images/infocard_92x64.png" border="0"></a>
+                        <br/><br/>
+                        Sign In using your personal or managed InfoCard.
+                        <br/>
+                        <br/>
+                    </td>
+                </tr>
+                <tr>
+                    <td colspan="2">
                         <div style="width:100%;"><input
                                 type="checkbox" id="chkRemember"
                                 onclick="setRememberMe();"><label
@@ -244,31 +278,8 @@
                         <%
                             }
                         %>
-                        <div><input
-                                type="submit"
-                                id="signin"
-                                value="Sign In"/>
-                        </div>
-                        </form>
-                    </td>
-                    <td height="175" valign="top">
-                        <a 
href="infocard.jsp?bounceback=<%=URLEncoder.encode(bounceback,"UTF-8")%>"><img
-                                src="images/infocard_92x64.png" border="0"></a>
-                        <br/><br/>
-                        Sign In using your personal or managed InfoCard.
-                        <br/>
-                        <br/>
-                    </td>
-                    <td height="175" valign="top">
-                        <form name="openidsignin" id="openidsignin" 
method="post" action="openidsubmit.jsp">
-                            <img src="images/openid-logo.jpg" border="0"><br/>
-                            Enter Your OpenID Url:<input type="text" 
name="openid_identifier" value="<%= MashupConstants.OPENID_URL_PREFIX %>"/>
-                            <input type="hidden" name="calledfrom" 
value="signin"/>
-                            <input type="submit" name="submit" value="Login" />
-                        </form>
-                        <br/>
-                        <br/>
                     </td>
+                    <td>&nbsp;</td>
                 </tr>
                 <tr>
                     <td>

Modified: trunk/mashup/java/modules/www/signout.jsp
URL: 
http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/www/signout.jsp?rev=19006&r1=19005&r2=19006&view=diff
==============================================================================
--- trunk/mashup/java/modules/www/signout.jsp   (original)
+++ trunk/mashup/java/modules/www/signout.jsp   Tue Jul  8 22:54:55 2008
@@ -90,6 +90,9 @@
                 } else if (curCookie.getName().equalsIgnoreCase("password")) {
                     curCookie.setMaxAge(0);
                     response.addCookie(curCookie);
+                } else if 
(curCookie.getName().equalsIgnoreCase(MashupConstants.REMEMBER_OPENID)) {
+                    curCookie.setMaxAge(0);
+                    response.addCookie(curCookie);
                 }
             }
         }

Modified: trunk/mashup/java/modules/www/validate_login.jsp
URL: 
http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/www/validate_login.jsp?rev=19006&r1=19005&r2=19006&view=diff
==============================================================================
--- trunk/mashup/java/modules/www/validate_login.jsp    (original)
+++ trunk/mashup/java/modules/www/validate_login.jsp    Tue Jul  8 22:54:55 2008
@@ -24,9 +24,11 @@
 <%@ page import="java.util.ResourceBundle" %>
 <%@ page import="org.wso2.wsas.ServerManager" %>
 <%@ page import="org.apache.axiom.om.util.Base64" %>
+<%@ page import="org.wso2.mashup.webapp.identity.IdentityHandler" %>
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
 <%
+    String redirectTo = request.getParameter("bounceback");
     ConfigurationContext axis2ConfigContext = 
ServerManager.getInstance().configContext;
     String contextRoot = AdminUIServletContextListener.contextPath;
     if (!contextRoot.endsWith(MashupConstants.FORWARD_SLASH)) {
@@ -46,6 +48,7 @@
             boolean rememberMe = false;
             String userNameStored = null;
             String passwordStored = null;
+            String openIdStored = null;
 
             Cookie curCookie = null;
             for (int x = 0; x < cookies.length; x++) {
@@ -58,10 +61,12 @@
                     passwordStored =
                             new String(Base64.decode(curCookie.getValue()),
                                     "UTF-8");
+                } else if 
(curCookie.getName().equalsIgnoreCase(MashupConstants.REMEMBER_OPENID)) {
+                    openIdStored = curCookie.getValue();
                 }
             }
 
-            if (rememberMe && (userNameStored != null) && (passwordStored != 
null)) {
+            if (rememberMe) {
 
                 ServletContext context = 
request.getSession().getServletContext();
 
@@ -69,9 +74,12 @@
                         RegistryConstants.REGISTRY);
 
                 try {
-                    MashupUtils.login(userNameStored, passwordStored, 
session.getId(),
-                                      request.getContextPath());
-                    
+                    if ((userNameStored != null) && (passwordStored != null)) {
+                        MashupUtils.login(userNameStored, passwordStored, 
session.getId(),
+                                          request.getContextPath());
+                    } else if (openIdStored != null) {
+                        IdentityHandler.openIDSubmit(request, response, 
redirectTo, openIdStored);
+                    }
                 } catch (Exception e) {
                     //Deleting the cookie in case of an exception.             
                
                     for (int x = 0; x < cookies.length; x++) {
@@ -85,6 +93,10 @@
                         } else if 
(curCookie.getName().equalsIgnoreCase("password")) {
                             curCookie.setMaxAge(0);
                             response.addCookie(curCookie);
+                        } else if (curCookie.getName().equalsIgnoreCase(
+                                MashupConstants.REMEMBER_OPENID)) {
+                            curCookie.setMaxAge(0);
+                            response.addCookie(curCookie);
                         }
                     }
                     //Re-directing to the sign in page

_______________________________________________
Mashup-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/mashup-dev

Reply via email to