Author: rwatler Date: Sat Feb 13 21:52:16 2010 New Revision: 909922 URL: http://svn.apache.org/viewvc?rev=909922&view=rev Log: JS2-1101: OpenID Support Update --------------------------------------------------------------- - add additional configuration parameters and preferences to OpenIDLoginPortlet - provider button labels and OpenID hosts/domains - flag to enable/disable OpenID provider/URL entry
Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/openid/OpenIDLoginPortlet.java portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/security/login/openid-login-prefs.jsp portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/security/login/openid-login.jsp Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/openid/OpenIDLoginPortlet.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/openid/OpenIDLoginPortlet.java?rev=909922&r1=909921&r2=909922&view=diff ============================================================================== --- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/openid/OpenIDLoginPortlet.java (original) +++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/openid/OpenIDLoginPortlet.java Sat Feb 13 21:52:16 2010 @@ -17,6 +17,11 @@ package org.apache.jetspeed.portlets.openid; import java.io.IOException; +import java.util.Arrays; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; @@ -49,6 +54,14 @@ { private static final Logger log = LoggerFactory.getLogger(OpenIDLoginPortlet.class); + public static final String PROVIDER_LABELS_INIT_PARAM_NAME = "providerLabels"; + public static final String PROVIDER_DOMAINS_INIT_PARAM_NAME = "providerDomains"; + public static final String ENABLE_OPEN_ID_ENTRY_INIT_PARAM_NAME = "enableOpenIDEntry"; + + public static final String PROVIDER_LABELS_PREF_NAME = "providerLabels"; + public static final String PROVIDER_DOMAINS_PREF_NAME = "providerDomains"; + public static final String ENABLE_OPEN_ID_ENTRY_PREF_NAME = "enableOpenIDEntry"; + public static final String ENABLE_REGISTRATION_CONFIG_PREF_NAME = "enableRegistrationConfig"; public static final String ENABLE_REGISTRATION_PREF_NAME = "enableRegistration"; public static final String REGISTRATION_USER_TEMPLATE_PREF_NAME = "newUserTemplateDirectory"; @@ -59,18 +72,30 @@ public static final String REGISTRATION_PROFILER_RULE_VALUES_PREF_NAME = "rulesValues"; public static final String SAVE_ACTION_PARAM_NAME = "save"; + + public static final String PROVIDER_BUTTONS_ATTR_NAME = "providerButtons"; + public static final String ENABLE_OPEN_ID_ENTRY_ATTR_NAME = "enableOpenIDEntry"; - private static final String [] REGISTRATION_PREF_NAMES = new String[]{ENABLE_REGISTRATION_CONFIG_PREF_NAME, - ENABLE_REGISTRATION_PREF_NAME, - REGISTRATION_USER_TEMPLATE_PREF_NAME, - REGISTRATION_SUBSITE_ROOT_PREF_NAME, - REGISTRATION_ROLES_PREF_NAME, - REGISTRATION_GROUPS_PREF_NAME, - REGISTRATION_PROFILER_RULE_NAMES_PREF_NAME, - REGISTRATION_PROFILER_RULE_VALUES_PREF_NAME}; + private static final List<String> PREF_NAMES = Arrays.asList(new String[]{PROVIDER_LABELS_PREF_NAME, + PROVIDER_DOMAINS_PREF_NAME, + ENABLE_OPEN_ID_ENTRY_PREF_NAME, + ENABLE_REGISTRATION_CONFIG_PREF_NAME, + ENABLE_REGISTRATION_PREF_NAME, + REGISTRATION_USER_TEMPLATE_PREF_NAME, + REGISTRATION_SUBSITE_ROOT_PREF_NAME, + REGISTRATION_ROLES_PREF_NAME, + REGISTRATION_GROUPS_PREF_NAME, + REGISTRATION_PROFILER_RULE_NAMES_PREF_NAME, + REGISTRATION_PROFILER_RULE_VALUES_PREF_NAME}); + private static final List<String> BOOLEAN_PREF_NAMES = Arrays.asList(new String[]{ENABLE_OPEN_ID_ENTRY_PREF_NAME, + ENABLE_REGISTRATION_CONFIG_PREF_NAME, + ENABLE_REGISTRATION_PREF_NAME}); private static final String OPEN_ID_RELAYING_PARTY_SERVLET_MAPPING = "/openid"; - OpenIDRegistrationConfiguration initRegistrationConfiguration; + private List<String> initProviderLabels; + private List<String> initProviderDomains; + private boolean initEnableOpenIDEntry; + private OpenIDRegistrationConfiguration initRegistrationConfiguration; /* (non-Javadoc) * @see org.apache.portals.bridges.common.GenericServletPortlet#init(javax.portlet.PortletConfig) @@ -80,6 +105,9 @@ super.init(config); // registration configuration parameters + initProviderLabels = OpenIDRegistrationConfiguration.parseParameterList(config.getInitParameter(PROVIDER_LABELS_INIT_PARAM_NAME)); + initProviderDomains = OpenIDRegistrationConfiguration.parseParameterList(config.getInitParameter(PROVIDER_DOMAINS_INIT_PARAM_NAME)); + initEnableOpenIDEntry = Boolean.parseBoolean(config.getInitParameter(ENABLE_OPEN_ID_ENTRY_INIT_PARAM_NAME)); if (Boolean.parseBoolean(config.getInitParameter(OpenIDConstants.ENABLE_REGISTRATION_CONFIG_INIT_PARAM_NAME))) { initRegistrationConfiguration = new OpenIDRegistrationConfiguration(); @@ -126,6 +154,35 @@ */ public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { + // provider button labels and domains + PortletPreferences prefs = request.getPreferences(); + List<String> providerButtonLabels = OpenIDRegistrationConfiguration.parseParameterList(prefs.getValue(PROVIDER_LABELS_PREF_NAME, null)); + List<String> providerButtonDomains = OpenIDRegistrationConfiguration.parseParameterList(prefs.getValue(PROVIDER_DOMAINS_PREF_NAME, null)); + if ((providerButtonLabels == null) || providerButtonLabels.isEmpty() || (providerButtonDomains == null) || providerButtonDomains.isEmpty()) + { + providerButtonLabels = initProviderLabels; + providerButtonDomains = initProviderDomains; + } + if ((providerButtonLabels != null) && !providerButtonLabels.isEmpty() && (providerButtonDomains != null) && !providerButtonDomains.isEmpty()) + { + Map<String,String> providerButtons = new LinkedHashMap<String,String>(); + Iterator<String> labelsIter = providerButtonLabels.iterator(); + Iterator<String> domainsIter = providerButtonDomains.iterator(); + while (labelsIter.hasNext() && domainsIter.hasNext()) + { + providerButtons.put(domainsIter.next(), labelsIter.next()); + } + request.setAttribute(PROVIDER_BUTTONS_ATTR_NAME, providerButtons); + } + // enable OpenID entry + boolean enableOpenIDEntry = initEnableOpenIDEntry; + String enableOpenIDEntryPref = prefs.getValue(ENABLE_OPEN_ID_ENTRY_PREF_NAME, null); + if (enableOpenIDEntryPref != null) + { + enableOpenIDEntry = Boolean.parseBoolean(enableOpenIDEntryPref); + } + request.setAttribute(ENABLE_OPEN_ID_ENTRY_ATTR_NAME, Boolean.toString(enableOpenIDEntry)); + // access login errors in session from OpenIDRelayingPartyServlet RequestContext requestContext = (RequestContext)request.getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE); String errorCode = (String)requestContext.getSessionAttribute(OpenIDConstants.OPEN_ID_ERROR); @@ -144,9 +201,9 @@ */ public void doEdit(RenderRequest request, RenderResponse response) throws PortletException, IOException { - // access registration preferences to edit + // access provider and registration preferences to edit PortletPreferences prefs = request.getPreferences(); - for (String prefName : REGISTRATION_PREF_NAMES) + for (String prefName : PREF_NAMES) { String prefValue = prefs.getValue(prefName, null); if (prefValue != null) @@ -232,10 +289,10 @@ // default preferences edit mode if (actionRequest.getParameter(SAVE_ACTION_PARAM_NAME) != null) { - // save preferences + // save provider and registration preferences PortletPreferences prefs = actionRequest.getPreferences(); boolean storePrefs = false; - for (String prefName : REGISTRATION_PREF_NAMES) + for (String prefName : PREF_NAMES) { String prefValue = actionRequest.getParameter(prefName); if ((prefValue != null) && (prefValue.length() > 0)) @@ -246,6 +303,15 @@ storePrefs = true; } } + else if (BOOLEAN_PREF_NAMES.indexOf(prefName) != -1) + { + String booleanPrefValue = prefs.getValue(prefName, null); + if ((booleanPrefValue == null) || !booleanPrefValue.equals("false")) + { + prefs.setValue(prefName, "false"); + storePrefs = true; + } + } else if (prefs.getValue(prefName, null) != null) { prefs.setValue(prefName, null); Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml?rev=909922&r1=909921&r2=909922&view=diff ============================================================================== --- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml (original) +++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml Sat Feb 13 21:52:16 2010 @@ -116,6 +116,21 @@ <value>/WEB-INF/security/login/openid-login-prefs.jsp</value> </init-param> <init-param> + <description>Display names for OpenID provider buttons.</description> + <name>providerLabels</name> + <value>Gmail, Yahoo!, myOpenID</value> + </init-param> + <init-param> + <description>Domain names for OpenID provider buttons.</description> + <name>providerDomains</name> + <value>gmail.com, yahoo.com, myopenid.com</value> + </init-param> + <init-param> + <description>Enable OpenID provider or URL entry.</description> + <name>enableOpenIDEntry</name> + <value>true</value> + </init-param> + <init-param> <description>Enable portlet init parameter registration configuration.</description> <name>enableRegistrationConfig</name> <value>false</value> @@ -167,6 +182,21 @@ </supports> <resource-bundle>org.apache.jetspeed.portlets.security.resources.OpenIDLoginResources</resource-bundle> <portlet-preferences> + <!-- Display names for OpenID provider buttons. --> + <preference> + <name>providerLabels</name> + <value>Gmail, Yahoo!, myOpenID</value> + </preference> + <!-- Domain names for OpenID provider buttons. --> + <preference> + <name>providerDomains</name> + <value>gmail.com, yahoo.com, myopenid.com</value> + </preference> + <!-- Enable OpenID provider or URL entry. --> + <preference> + <name>enableOpenIDEntry</name> + <value>true</value> + </preference> <!-- Enable portlet preferences registration configuration. --> <preference> <name>enableRegistrationConfig</name> Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/security/login/openid-login-prefs.jsp URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/security/login/openid-login-prefs.jsp?rev=909922&r1=909921&r2=909922&view=diff ============================================================================== --- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/security/login/openid-login-prefs.jsp (original) +++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/security/login/openid-login-prefs.jsp Sat Feb 13 21:52:16 2010 @@ -23,6 +23,12 @@ <portlet:defineObjects/> <c_rt:set var="saveAction" value="<%=OpenIDLoginPortlet.SAVE_ACTION_PARAM_NAME%>"/> +<c_rt:set var="providerLabelsPrefName" value="<%=OpenIDLoginPortlet.PROVIDER_LABELS_PREF_NAME%>"/> +<c_rt:set var="providerLabels" value="<%=renderRequest.getAttribute(OpenIDLoginPortlet.PROVIDER_LABELS_PREF_NAME)%>"/> +<c_rt:set var="providerDomainsPrefName" value="<%=OpenIDLoginPortlet.PROVIDER_DOMAINS_PREF_NAME%>"/> +<c_rt:set var="providerDomains" value="<%=renderRequest.getAttribute(OpenIDLoginPortlet.PROVIDER_DOMAINS_PREF_NAME)%>"/> +<c_rt:set var="enableOpenIDEntryPrefName" value="<%=OpenIDLoginPortlet.ENABLE_OPEN_ID_ENTRY_PREF_NAME%>"/> +<c_rt:set var="enableOpenIDEntry" value="<%=Boolean.parseBoolean((String)renderRequest.getAttribute(OpenIDLoginPortlet.ENABLE_OPEN_ID_ENTRY_PREF_NAME))%>"/> <c_rt:set var="enableConfigPrefName" value="<%=OpenIDLoginPortlet.ENABLE_REGISTRATION_CONFIG_PREF_NAME%>"/> <c_rt:set var="enableConfig" value="<%=Boolean.parseBoolean((String)renderRequest.getAttribute(OpenIDLoginPortlet.ENABLE_REGISTRATION_CONFIG_PREF_NAME))%>"/> <c_rt:set var="enablePrefName" value="<%=OpenIDLoginPortlet.ENABLE_REGISTRATION_PREF_NAME%>"/> @@ -44,7 +50,25 @@ <form method="POST" action='<portlet:actionURL/>'> <table border="0"> <tr> - <td nowrap align="right" class="portlet-section-alternate">Enable Preferences: </td> + <td nowrap align="right" class="portlet-section-alternate">OpenId Provider Labels: </td> + <td align="left" class="portlet-section-body"> + <input type="text" size="40" name="${providerLabelsPrefName}" value="${providerLabels}" class="portlet-form-field-label"/> + </td> + </tr> + <tr> + <td nowrap align="right" class="portlet-section-alternate">OpenId Provider Domains: </td> + <td align="left" class="portlet-section-body"> + <input type="text" size="40" name="${providerDomainsPrefName}" value="${providerDomains}" class="portlet-form-field-label"/> + </td> + </tr> + <tr> + <td nowrap align="right" class="portlet-section-alternate">Enable OpenID provider or URL entry: </td> + <td align="left" class="portlet-section-body"> + <input type="checkbox" name="${enableOpenIDEntryPrefName}" value="true" <c:if test="${enableOpenIDEntry == 'true'}">checked</c:if>/> + </td> + </tr> + <tr> + <td nowrap align="right" class="portlet-section-alternate">Enable Registration Preferences: </td> <td align="left" class="portlet-section-body"> <input type="checkbox" name="${enableConfigPrefName}" value="true" <c:if test="${enableConfig == 'true'}">checked</c:if>/> </td> Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/security/login/openid-login.jsp URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/security/login/openid-login.jsp?rev=909922&r1=909921&r2=909922&view=diff ============================================================================== --- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/security/login/openid-login.jsp (original) +++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/security/login/openid-login.jsp Sat Feb 13 21:52:16 2010 @@ -20,6 +20,7 @@ <%...@taglib uri="http://java.sun.com/portlet" prefix="portlet"%> <%...@page import="org.apache.jetspeed.openid.OpenIDConstants"%> +<%...@page import="org.apache.jetspeed.portlets.openid.OpenIDLoginPortlet"%> <fmt:setBundle basename="org.apache.jetspeed.portlets.security.resources.OpenIDLoginResources"/> @@ -32,6 +33,9 @@ <c_rt:set var="openIDLogoutRequest" value="<%=OpenIDConstants.OPEN_ID_LOGOUT_REQUEST%>"/> <c_rt:set var="openIDError" value="<%=renderRequest.getAttribute(OpenIDConstants.OPEN_ID_ERROR)%>"/> +<c_rt:set var="providerButtons" value="<%=renderRequest.getAttribute(OpenIDLoginPortlet.PROVIDER_BUTTONS_ATTR_NAME)%>"/> +<c_rt:set var="enableOpenIDEntry" value="<%=renderRequest.getAttribute(OpenIDLoginPortlet.ENABLE_OPEN_ID_ENTRY_ATTR_NAME)%>"/> + <div class="portlet-section-text"> <c:choose> <c:when test="${pageContext.request.userPrincipal != null}"> @@ -43,19 +47,23 @@ </c:when> <c:otherwise> <c:if test="${openIDError != null}"><div class="portlet-msg-alert"><fmt:message key="openid-login.label.${openIDError}"/></div><br/></c:if> - <form method="POST" action='<portlet:actionURL/>'> - <input type="hidden" name="${openIDProvider}"/> - <input type="submit" value='<fmt:message key="openid-login.label.ProviderLogin"><fmt:param><c:out value="Google"/></fmt:param></fmt:message>' onclick="this.form.elements[0].value='gmail.com'; true"/> - <input type="submit" value='<fmt:message key="openid-login.label.ProviderLogin"><fmt:param><c:out value="Yahoo!"/></fmt:param></fmt:message>' onclick="this.form.elements[0].value='yahoo.com'; true"/> - <input type="submit" value='<fmt:message key="openid-login.label.ProviderLogin"><fmt:param><c:out value="myOpenID"/></fmt:param></fmt:message>' onclick="this.form.elements[0].value='myopenid.com'; true"/> - <input type="hidden" name="${openIDRequest}" value="${openIDLoginRequest}"/> - </form> - <form method="POST" action='<portlet:actionURL/>'> - <span class="portlet-form-field-label"><fmt:message key="openid-login.label.OpenID"/></span> - <input type="text" class="portlet-form-field" size="30" name="${openIDDiscovery}"/> - <input type="submit" class="portlet-form-button" value='<fmt:message key="openid-login.label.Login"/>'/> - <input type="hidden" name="${openIDRequest}" value="${openIDLoginRequest}"/> - </form> + <c:if test="${not empty providerButtons}"> + <form method="POST" action='<portlet:actionURL/>'> + <input type="hidden" name="${openIDProvider}"/> + <c:forEach var="providerButton" items="${providerButtons}"> + <input type="submit" value='<fmt:message key="openid-login.label.ProviderLogin"><fmt:param><c:out value="${providerButton.value}"/></fmt:param></fmt:message>' onclick="this.form.elements[0].value='${providerButton.key}'; true"/> + </c:forEach> + <input type="hidden" name="${openIDRequest}" value="${openIDLoginRequest}"/> + </form> + </c:if> + <c:if test="${enableOpenIDEntry == 'true'}"> + <form method="POST" action='<portlet:actionURL/>'> + <span class="portlet-form-field-label"><fmt:message key="openid-login.label.OpenID"/></span> + <input type="text" class="portlet-form-field" size="30" name="${openIDDiscovery}"/> + <input type="submit" class="portlet-form-button" value='<fmt:message key="openid-login.label.Login"/>'/> + <input type="hidden" name="${openIDRequest}" value="${openIDLoginRequest}"/> + </form> + </c:if> </c:otherwise> </c:choose> </div> --------------------------------------------------------------------- To unsubscribe, e-mail: jetspeed-dev-unsubscr...@portals.apache.org For additional commands, e-mail: jetspeed-dev-h...@portals.apache.org