You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by gm...@apache.org on 2014/03/18 02:20:34 UTC

svn commit: r1578699 - in /roller/trunk/app: ./ src/main/java/org/apache/roller/weblogger/business/ src/main/java/org/apache/roller/weblogger/pojos/ src/main/java/org/apache/roller/weblogger/ui/core/ src/main/java/org/apache/roller/weblogger/ui/core/se...

Author: gmazza
Date: Tue Mar 18 01:20:34 2014
New Revision: 1578699

URL: http://svn.apache.org/r1578699
Log:
ROL-1987 Reactivate LDAP capability in Roller trunk (user will have to uncomment & customize LDAP config in security.xml) and upgrade to Spring 4.

Modified:
    roller/trunk/app/pom.xml
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/UserManager.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/ObjectPermission.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/security/AuthoritiesPopulator.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java
    roller/trunk/app/src/main/resources/ApplicationResources.properties
    roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/Register.jsp
    roller/trunk/app/src/main/webapp/WEB-INF/security.xml
    roller/trunk/app/src/main/webapp/roller-ui/login-redirect.jsp

Modified: roller/trunk/app/pom.xml
URL: http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/pom.xml (original)
+++ roller/trunk/app/pom.xml Tue Mar 18 01:20:34 2014
@@ -22,9 +22,9 @@
         <testThemesDir>${project.build.testOutputDirectory}${file.separator}themes</testThemesDir>
         <testIndexDir>${project.build.testOutputDirectory}${file.separator}index</testIndexDir>
         <testPlanetCache>${project.build.testOutputDirectory}${file.separator}planetcache</testPlanetCache>
-        <lucene.version>4.6.0</lucene.version>
-        <spring.version>3.2.4.RELEASE</spring.version>
-        <spring.security.version>3.2.0.RELEASE</spring.security.version>
+        <lucene.version>4.7.0</lucene.version>
+        <spring.version>4.0.2.RELEASE</spring.version>
+        <spring.security.version>3.2.2.RELEASE</spring.security.version>
     </properties>
 
     <dependencies>
@@ -40,7 +40,7 @@
         <dependency>
             <groupId>org.eclipse.persistence</groupId>
             <artifactId>eclipselink</artifactId>
-            <version>2.5.0</version>
+            <version>2.5.1</version>
         </dependency>
 
         <!-- Alternative testing with Hibernate (used by default with JBoss)
@@ -275,13 +275,13 @@
         <dependency>
             <groupId>org.apache.struts</groupId>
             <artifactId>struts2-spring-plugin</artifactId>
-            <version>2.3.16</version>
+            <version>2.3.16.1</version>
         </dependency>
 
         <dependency>
             <groupId>org.apache.struts</groupId>
             <artifactId>struts2-tiles-plugin</artifactId>
-            <version>2.3.16</version>
+            <version>2.3.16.1</version>
         </dependency>
 
         <dependency>

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/UserManager.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/UserManager.java?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/UserManager.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/UserManager.java Tue Mar 18 01:20:34 2014
@@ -167,8 +167,8 @@ public interface UserManager {
      * Lookup a user by User attribute
      * 
      * @param name attribute name
-     * @param value sttribute value
-     * @return UsUserhe user, or null if not found or is disabled.
+     * @param value attribute value
+     * @return User the user, or null if not found or is disabled.
      * @throws WebloggerException If there is a problem
      */
     User getUserByAttribute(String name, String value) throws WebloggerException;

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/ObjectPermission.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/ObjectPermission.java?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/ObjectPermission.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/ObjectPermission.java Tue Mar 18 01:20:34 2014
@@ -30,7 +30,7 @@ import org.apache.roller.util.UUIDGenera
 public abstract class ObjectPermission extends RollerPermission {
     private static Log log = LogFactory.getLog(ObjectPermission.class);
 
-    protected String  id = UUIDGenerator.generateUUID();;
+    protected String  id = UUIDGenerator.generateUUID();
     protected String  userName;
     protected String  objectType;
     protected String  objectId;

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java Tue Mar 18 01:20:34 2014
@@ -243,8 +243,11 @@ public class RollerContext extends Conte
         String encryptPasswords = WebloggerConfig.getProperty("passwds.encryption.enabled");
         boolean doEncrypt = Boolean.valueOf(encryptPasswords);
         
-        if (doEncrypt) {
-            DaoAuthenticationProvider provider = (DaoAuthenticationProvider) ctx.getBean("org.springframework.security.authentication.dao.DaoAuthenticationProvider#0");
+        String daoBeanName = "org.springframework.security.authentication.dao.DaoAuthenticationProvider#0";
+
+        // for LDAP-only authentication, no daoBeanName (i.e., UserDetailsService) may be provided in security.xml.
+        if (doEncrypt && ctx.containsBean(daoBeanName)) {
+            DaoAuthenticationProvider provider = (DaoAuthenticationProvider) ctx.getBean(daoBeanName);
             String algorithm = WebloggerConfig.getProperty("passwds.encryption.algorithm");
             PasswordEncoder encoder = null;
             if (algorithm.equalsIgnoreCase("SHA")) {

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java Tue Mar 18 01:20:34 2014
@@ -103,7 +103,7 @@ public class RollerSession 
                         AutoProvision provisioner = RollerContext.getAutoProvision();
                         if(provisioner != null) {
                             boolean userProvisioned = provisioner.execute(request);
-                            if(userProvisioned) {
+                            if (userProvisioned) {
                                 // try lookup again real quick
                                 user = umgr.getUserByUserName(principal.getName());
                             }

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/security/AuthoritiesPopulator.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/security/AuthoritiesPopulator.java?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/security/AuthoritiesPopulator.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/security/AuthoritiesPopulator.java Tue Mar 18 01:20:34 2014
@@ -54,8 +54,8 @@ public class AuthoritiesPopulator implem
             throw new IllegalArgumentException("The userData argument should not be null at this point.");
         }
 
-        User user = null;
-        List<String> roles = null;
+        User user;
+        List<String> roles = new ArrayList<String>();
         try {
             Weblogger roller = WebloggerFactory.getWeblogger();
             UserManager umgr = roller.getUserManager();
@@ -67,10 +67,6 @@ public class AuthoritiesPopulator implem
             throw new DataRetrievalFailureException("ERROR in user lookup", ex);
         }
 
-        if (user == null) {
-            throw new UsernameNotFoundException("ERROR user: " + username + " not found while granting authorities");
-        }
-
         int roleCount = roles.size() + (defaultRole != null ? 1 : 0);
         List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(roleCount); // SimpleGrantedAuthority[roleCount];
         int i = 0;

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java Tue Mar 18 01:20:34 2014
@@ -46,7 +46,7 @@ public class BasicUserAutoProvision impl
 	public boolean execute(HttpServletRequest request) {
 		User ud = CustomUserRegistry.getUserDetailsFromAuthentication(request);
 
-		if (ud != null) {
+		if (hasNecessaryFields(ud)) {
 			UserManager mgr;
 			try {
 				mgr = WebloggerFactory.getWeblogger().getUserManager();
@@ -67,12 +67,19 @@ public class BasicUserAutoProvision impl
 					}
 				}
 				WebloggerFactory.getWeblogger().flush();
+                return true;
 
-			} catch (WebloggerException e) {
+            } catch (WebloggerException e) {
 				log.warn("Error while auto-provisioning user from SSO.", e);
 			}
 		}
 
-		return true;
+        return false;
 	}
+
+    private boolean hasNecessaryFields(User user) {
+        return user != null && user.getUserName() != null && user.getFullName() != null
+                && user.getScreenName() != null && user.getEmailAddress() != null;
+    }
+
 }

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java Tue Mar 18 01:20:34 2014
@@ -33,6 +33,7 @@ import org.apache.roller.weblogger.confi
 import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
 import org.apache.roller.weblogger.pojos.User;
 import org.apache.roller.weblogger.pojos.UserAttribute;
+import org.apache.roller.weblogger.ui.core.RollerSession;
 import org.apache.roller.weblogger.ui.core.security.CustomUserRegistry;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.MailUtil;
@@ -41,7 +42,6 @@ import org.apache.struts2.interceptor.va
 //import org.springframework.security.userdetails.openid.OpenIDUserAttribute;
 
 
-
 /**
  * Actions for registering a new user.
  */
@@ -54,7 +54,7 @@ public class Register extends UIAction i
     // this is a no-no, we should not need this
     private HttpServletRequest servletRequest = null;
     
-    private boolean fromSS0 = false;
+    private boolean fromSSO = false;
     private String activationStatus = null;
     
     private String activationCode = null;
@@ -139,14 +139,14 @@ public class Register extends UIAction i
                 if (fromSSO != null) {
                     // Copy user details from Spring Security, including LDAP attributes
                     getBean().copyFrom(fromSSO);
-                    setFromSso(true);
+                    setFromSSO(true);
                 }
                 // See if user is already logged in via CMA
                 else if (getServletRequest().getUserPrincipal() != null) {
                     // Only detail we get is username, sadly no LDAP attributes
                     getBean().setUserName(getServletRequest().getUserPrincipal().getName());
                     getBean().setScreenName(getServletRequest().getUserPrincipal().getName());
-                    setFromSso(true);
+                    setFromSSO(true);
                 }
             }
             
@@ -248,15 +248,16 @@ public class Register extends UIAction i
                         // send activation mail to the user
                         MailUtil.sendUserActivationEmail(ud);
                     } catch (WebloggerException ex) {
-                        log.error("Error sending activation email to - "+ud.getEmailAddress(), ex);
+                        log.error("Error sending activation email to - " + ud.getEmailAddress(), ex);
                     }
 
                     setActivationStatus("pending");
                 }
 
                 // Invalidate session, otherwise new user who was originally
-                // authenticated via LDAP/SSO will remain logged in with
-                // a but without a valid Roller role.
+                // authenticated via LDAP/SSO will remain logged in but
+                // without a valid Roller role.
+                getServletRequest().getSession().removeAttribute(RollerSession.ROLLER_SESSION);
                 getServletRequest().getSession().invalidate();
 
                 // set a special page title
@@ -319,7 +320,7 @@ public class Register extends UIAction i
     public void myValidate() {
         
         // if usingSSO, we don't want to error on empty password/username from HTML form.
-        setFromSso(false);
+        setFromSSO(false);
         boolean usingSSO = WebloggerConfig.getBooleanProperty("users.sso.enabled");
         if (usingSSO) {
             boolean storePassword = WebloggerConfig.getBooleanProperty("users.sso.passwords.saveInRollerDb");
@@ -334,7 +335,7 @@ public class Register extends UIAction i
                 getBean().setPasswordText(password);
                 getBean().setPasswordConfirm(password);
                 getBean().setUserName(fromSSO.getUserName());
-                setFromSso(true);
+                setFromSSO(true);
             }
 
             // Preserve username and password, CMA case             
@@ -342,7 +343,7 @@ public class Register extends UIAction i
                 getBean().setUserName(getServletRequest().getUserPrincipal().getName());
                 getBean().setPasswordText(password);
                 getBean().setPasswordConfirm(password);
-                setFromSso(true);
+                setFromSSO(true);
             }
         }
         
@@ -358,7 +359,7 @@ public class Register extends UIAction i
         }
         
         // check password, it is required if OpenID and SSO are disabled
-        if (getOpenIdConfiguration().equals("disabled") && !getFromSso()
+        if (getOpenIdConfiguration().equals("disabled") && !getFromSSO()
                 && StringUtils.isEmpty(getBean().getPasswordText())) {
                 addError("error.add.user.passwordEmpty");
                 return;
@@ -410,12 +411,12 @@ public class Register extends UIAction i
         this.bean = bean;
     }
 
-    public boolean getFromSso() {
-        return fromSS0;
+    public boolean getFromSSO() {
+        return fromSSO;
     }
 
-    public void setFromSso(boolean fromSS0) {
-        this.fromSS0 = fromSS0;
+    public void setFromSSO(boolean fromSSO) {
+        this.fromSSO = fromSSO;
     }
 
     public String getActivationStatus() {

Modified: roller/trunk/app/src/main/resources/ApplicationResources.properties
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/ApplicationResources.properties?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/resources/ApplicationResources.properties (original)
+++ roller/trunk/app/src/main/resources/ApplicationResources.properties Tue Mar 18 01:20:34 2014
@@ -1894,7 +1894,7 @@ this site and your email address so we c
 userRegister.tip.userName=A short one-word username to uniquely identify \
 yourself on the site. Please limit it to simple alphanumeric characters (a-z, \
 A-Z and 0-9) and do not use HTML. You will <b>not</b> be able to change this \
-later, but that\'s OK because this string will not be publicly displayed. 
+later, but that''s OK because this string will not be publicly displayed.
 
 userRegister.tip.screenName=Your desired screen name (with no HTML). This is \
 is what will be displayed in your weblog and on weblog entries that you write.

Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/Register.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/Register.jsp?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/Register.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/Register.jsp Tue Mar 18 01:20:34 2014
@@ -32,7 +32,7 @@
         </td>
     </tr>
         
-    <s:if test="fromSso">
+    <s:if test="fromSSO">
         <tr>
             <td class="label"><label for="userName" /><s:text name="userSettings.username" /></label></td>
             <td class="field"><strong><s:property value="bean.userName" /></strong></td>
@@ -65,7 +65,7 @@
         <td class="description"><s:text name="userRegister.tip.email" /></td>
     </tr>
 
-    <s:if test="!fromSso">
+    <s:if test="!fromSSO">
         <tr>
             <td colspan="3">
                 <h2><s:text name="userRegister.heading.authentication" /></h2>
@@ -158,40 +158,45 @@
 function onChange() {
     var disabled = true;
     var openIdConfig    = '<s:property value="openIdConfiguration" />';
-    var ssoEnabled      = <s:property value="fromSso" />;
-    var passwordText    = document.register['bean.passwordText'].value;
-    var passwordConfirm = document.register['bean.passwordConfirm'].value;
-    var userName        = document.register['bean.userName'].value;
+    var ssoEnabled      = <s:property value="fromSSO" />;
     var emailAddress    = document.register['bean.emailAddress'].value;
-    var openIdUrl       = "";
+    var userName = passwordText = passwordConfirm = openIdUrl = "";
+
+    if (ssoEnabled) {
+        userName = '<s:property value="bean.userName" />';
+    } else {
+        userName = document.register['bean.userName'].value;
+    }
+
+    if (ssoEnabled == false && openIdConfig != 'only') {
+        passwordText    = document.register['bean.passwordText'].value;
+        passwordConfirm = document.register['bean.passwordConfirm'].value;
+    }
     if (openIdConfig != 'disabled') {
         openIdUrl = document.register['bean.openIdUrl'].value;
     }
-    
+
     if (ssoEnabled) {
         if (emailAddress) disabled = false;
-
     } else if (openIdConfig == 'disabled') {
         if (emailAddress && userName && passwordText && passwordConfirm) disabled = false;
-        
     } else if (openIdConfig == 'only') {
         if (emailAddress && openIdUrl) disabled = false;
-        
     } else if (openIdConfig == 'hybrid') {
         if (emailAddress && ((passwordText && passwordConfirm) || (openIdUrl)) ) disabled = false;
     }
 
-    if ((passwordText || passwordConfirm) && !(passwordText == passwordConfirm)) {
-        document.getElementById('readytip').innerHTML = '<s:text name="userRegister.error.mismatchedPasswords" />';
-        disabled = true;
-    } else if (disabled) {
-        document.getElementById('readytip').innerHTML = '<s:text name="userRegister.tip.ready" />'
-    } else {
-        document.getElementById('readytip').innerHTML = '<s:text name="userRegister.success.ready" />'
+    if (!ssoEnabled) {
+        if ((passwordText || passwordConfirm) && !(passwordText == passwordConfirm)) {
+            document.getElementById('readytip').innerHTML = '<s:text name="userRegister.error.mismatchedPasswords" />';
+            disabled = true;
+        } else if (disabled) {
+            document.getElementById('readytip').innerHTML = '<s:text name="userRegister.tip.ready" />'
+        } else {
+            document.getElementById('readytip').innerHTML = '<s:text name="userRegister.success.ready" />'
+        }
     }
     document.getElementById('submit').disabled = disabled;
 }
 document.getElementById('submit').disabled = true;
 </script>
-
-

Modified: roller/trunk/app/src/main/webapp/WEB-INF/security.xml
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/security.xml?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/security.xml (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/security.xml Tue Mar 18 01:20:34 2014
@@ -20,7 +20,7 @@
        xmlns:beans="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
-          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+          http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.2.xsd">
 
@@ -51,7 +51,7 @@
         <beans:property name="allowIfAllAbstainDecisions" value="false"/>
         <beans:property name="decisionVoters">
             <beans:list>
-                <beans:ref local="roleVoter"/>
+                <beans:ref bean="roleVoter"/>
             </beans:list>
         </beans:property>
     </beans:bean>
@@ -63,8 +63,11 @@
     <!-- Read users from Roller API -->
     <authentication-manager alias='rollerAuthenticationManager'>
         <authentication-provider ref="rememberMeAuthenticationProvider"/>
+        <!-- Uncomment one of the three below, based on whether database, LDAP, or
+             OpenID authentication is desired. -->
         <authentication-provider user-service-ref="rollerUserService"/>
-        <authentication-provider ref="openIDAuthProvider"/>
+        <!--authentication-provider ref="ldapAuthProvider"/>
+        <authentication-provider ref="openIDAuthProvider"/-->
     </authentication-manager>
 
     <beans:bean id="rollerUserService"
@@ -110,4 +113,35 @@
         </beans:property>
     </beans:bean>
 
+    <!-- Uncomment & customize below beans if using LDAP -->
+    <!--beans:bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
+        <beans:constructor-arg value="ldap://localhost:10389/dc=example,dc=com" />
+        <beans:property name="userDn" value="uid=admin,ou=system" />
+        <beans:property name="password" value="secret" />
+    </beans:bean>
+
+    <beans:bean id="ldapAuthProvider"
+                class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
+
+        <beans:constructor-arg>
+            <beans:bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
+                <beans:constructor-arg ref="contextSource" />
+                <beans:property name="userSearch" ref="userSearch" />
+            </beans:bean>
+        </beans:constructor-arg>
+        <beans:constructor-arg>
+            <beans:bean
+                    class="org.apache.roller.weblogger.ui.core.security.AuthoritiesPopulator">
+                <beans:property name="defaultRole" value="editor" />
+            </beans:bean>
+        </beans:constructor-arg>
+    </beans:bean>
+
+    <beans:bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
+        <beans:constructor-arg index="0" value="" />
+        <beans:constructor-arg index="1" value="(uid={0})" />
+        <beans:constructor-arg index="2" ref="contextSource" />
+        <beans:property name="searchSubtree" value="true" />
+    </beans:bean-->
+
 </beans:beans>

Modified: roller/trunk/app/src/main/webapp/roller-ui/login-redirect.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/roller-ui/login-redirect.jsp?rev=1578699&r1=1578698&r2=1578699&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/roller-ui/login-redirect.jsp (original)
+++ roller/trunk/app/src/main/webapp/roller-ui/login-redirect.jsp Tue Mar 18 01:20:34 2014
@@ -24,12 +24,12 @@
 User user = RollerSession.getRollerSession(request).getAuthenticatedUser();
 List weblogs = WebloggerFactory.getWeblogger().getWeblogManager().getUserWeblogs(user, true);
 
-if (weblogs.size() == 1) {
+if (user == null) {
+    response.sendRedirect(request.getContextPath()+"/roller-ui/register.rol");
+} else if (weblogs.size() == 1) {
     Weblog weblog = (Weblog) weblogs.get(0);
     response.sendRedirect(request.getContextPath()+"/roller-ui/authoring/entryAdd.rol?weblog="+weblog.getHandle());
 } else {
     response.sendRedirect(request.getContextPath()+"/roller-ui/menu.rol");
 }
-
 %>
-