r955 - in xwiki/trunk: . src/main/java/com/xpn/xwiki/user/impl/LDAP

Xavier MOGHRABI moghrabix at users.forge.objectweb.org
Thu Mar 2 11:33:40 CET 2006


Author: moghrabix
Date: 2006-03-02 11:33:39 +0100 (Thu, 02 Mar 2006)
New Revision: 955

Modified:
   xwiki/trunk/.classpath
   xwiki/trunk/src/main/java/com/xpn/xwiki/user/impl/LDAP/LDAPAuthServiceImpl.java
Log:
Improvements on LDAP authentification when using Virtual Wiki configuration


Modified: xwiki/trunk/.classpath
===================================================================
--- xwiki/trunk/.classpath	2006-03-02 07:39:59 UTC (rev 954)
+++ xwiki/trunk/.classpath	2006-03-02 10:33:39 UTC (rev 955)
@@ -25,7 +25,6 @@
 	<classpathentry kind="lib" path="lib/exoplatform.services.security.impl-1.0.jar"/>
 	<classpathentry kind="lib" path="lib/exo-security-service-1.0.jar"/>
 	<classpathentry kind="lib" path="lib/exo-services-container-1.0.jar"/>
-	<classpathentry kind="lib" path="lib/groovy-all-1.0-jsr-01.jar"/>
 	<classpathentry kind="lib" path="lib/InlineJavaServer.jar"/>
 	<classpathentry kind="lib" path="lib/InlineJavaUser.jar"/>
 	<classpathentry kind="lib" path="lib/jcommon-1.0.0-rc1.jar"/>
@@ -115,5 +114,6 @@
 	<classpathentry kind="lib" path="lib/jcr-1.0.jar"/>
 	<classpathentry kind="lib" path="lib/rome-0.7.jar"/>
 	<classpathentry kind="lib" path="lib/rome-fetcher-0.7.jar"/>
+	<classpathentry kind="lib" path="lib/groovy-all-1.0-jsr-04.jar"/>
 	<classpathentry kind="output" path="build/web/WEB-INF/classes"/>
 </classpath>

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/user/impl/LDAP/LDAPAuthServiceImpl.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/user/impl/LDAP/LDAPAuthServiceImpl.java	2006-03-02 07:39:59 UTC (rev 954)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/user/impl/LDAP/LDAPAuthServiceImpl.java	2006-03-02 10:33:39 UTC (rev 955)
@@ -97,8 +97,29 @@
                    principal = GetUserPrincipal(susername, context);
                    if (principal == null && attributes.size() > 0)
                    {
-                       CreateUserFromLDAP(susername, attributes, context);
-                       principal = GetUserPrincipal(susername, context);
+                	   // In case of Virtual Wikis, users should be added in the main wiki
+                	   	// if ldap is not configured for the virtual wiki
+						if (context.isVirtual()) {
+							String db = context.getDatabase();
+							try {
+								// Switch to the main database in case of
+								// virtual and if not local LDAP configuration
+								if (context.getWiki().getXWikiPreference("ldap_server", context) == null || context.getWiki().getXWikiPreference("ldap_server", context).length() == 0) {
+									context.setDatabase(context.getWiki().getDatabase());
+								}
+								try {
+									CreateUserFromLDAP(susername, attributes,	context);
+									principal = GetUserPrincipal(susername, context);
+								} catch (Exception e) {
+								}
+							} finally {
+								context.setDatabase(db);
+							}
+						} else {
+							CreateUserFromLDAP(susername, attributes, context);
+							principal = GetUserPrincipal(susername, context);
+						}
+						context.getWiki().flushCache();
                    }
                }
             }





More information about the Xwiki-notifications mailing list