From 98b4b9f4b17f9e9d0900b13bf1092eee32499d1b Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 24 Apr 2012 18:09:11 -0400
Subject: [PATCH] Add LdapUserServiceTest to suite and adjusted test port from 389 to 1389

---
 src/com/gitblit/LdapUserService.java |   46 +++++++++++++++++++++++-----------------------
 1 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/src/com/gitblit/LdapUserService.java b/src/com/gitblit/LdapUserService.java
index c67d17b..25f4e03 100644
--- a/src/com/gitblit/LdapUserService.java
+++ b/src/com/gitblit/LdapUserService.java
@@ -20,6 +20,7 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.security.GeneralSecurityException;
+import java.util.List;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -55,7 +56,7 @@
 	@Override
 	public void setup(IStoredSettings settings) {
 		this.settings = settings;
-		String file = settings.getString(Keys.realm.ldap_backingUserService, "users.conf");
+		String file = settings.getString(Keys.realm.ldap.backingUserService, "users.conf");
 		File realmFile = GitBlit.getFileOrFolder(file);
 
 		serviceImpl = createUserService(realmFile);
@@ -64,9 +65,9 @@
 	
 	private LDAPConnection getLdapConnection() {
 		try {
-			URI ldapUrl = new URI(settings.getRequiredString(Keys.realm.ldap_server));
-			String bindUserName = settings.getString(Keys.realm.ldap_username, "");
-			String bindPassword = settings.getString(Keys.realm.ldap_password, "");
+			URI ldapUrl = new URI(settings.getRequiredString(Keys.realm.ldap.server));
+			String bindUserName = settings.getString(Keys.realm.ldap.username, "");
+			String bindPassword = settings.getString(Keys.realm.ldap.password, "");
 			int ldapPort = ldapUrl.getPort();
 			
 			if (ldapUrl.getScheme().equalsIgnoreCase("ldaps")) {	// SSL
@@ -113,7 +114,7 @@
 	 * @since 1.0.0
 	 */	
 	public boolean supportsTeamMembershipChanges() {
-		return !settings.getBoolean(Keys.realm.ldap_maintainTeams, false);
+		return !settings.getBoolean(Keys.realm.ldap.maintainTeams, false);
 	}
 
 	/**
@@ -134,8 +135,8 @@
 		LDAPConnection ldapConnection = getLdapConnection();		
 		if (ldapConnection != null) {
 			// Find the logging in user's DN
-			String accountBase = settings.getString(Keys.realm.ldap_accountBase, "");
-			String accountPattern = settings.getString(Keys.realm.ldap_accountPattern, "(&(objectClass=person)(sAMAccountName=${username}))");
+			String accountBase = settings.getString(Keys.realm.ldap.accountBase, "");
+			String accountPattern = settings.getString(Keys.realm.ldap.accountPattern, "(&(objectClass=person)(sAMAccountName=${username}))");
 			accountPattern = StringUtils.replace(accountPattern, "${username}", simpleUsername);
 
 			SearchResult result = doSearch(ldapConnection, accountBase, accountPattern);
@@ -148,7 +149,7 @@
 					
 					UserModel user = getUserModel(simpleUsername);
 					if (user == null)	// create user object for new authenticated user
-						user = createUserFromLdap(loggingInUser);
+						user = createUserFromLdap(simpleUsername, loggingInUser);
 					
 					user.password = "StoredInLDAP";
 					
@@ -174,25 +175,24 @@
 	}
 
 	private void setAdminAttribute(UserModel user) {
-		String adminString = settings.getString(Keys.realm.ldap_admins, "");
-		String[] admins = adminString.split(" ");
-		user.canAdmin = false;
-		for (String admin : admins) {
-			if (admin.startsWith("@")) { // Team
-				if (user.getTeam(admin.substring(1)) != null)
-					user.canAdmin = true;
-			} else
-				if (user.getName().equalsIgnoreCase(admin))
-					user.canAdmin = true;
-		}
+	    user.canAdmin = false;
+	    List<String>  admins = settings.getStrings(Keys.realm.ldap.admins);
+	    for (String admin : admins) {
+	        if (admin.startsWith("@")) { // Team
+	            if (user.getTeam(admin.substring(1)) != null)
+	                user.canAdmin = true;
+	        } else
+	            if (user.getName().equalsIgnoreCase(admin))
+	                user.canAdmin = true;
+	    }
 	}
 
 	private void getTeamsFromLdap(LDAPConnection ldapConnection, String simpleUsername, SearchResultEntry loggingInUser, UserModel user) {
 		String loggingInUserDN = loggingInUser.getDN();
 		
 		user.teams.clear();		// Clear the users team memberships - we're going to get them from LDAP
-		String groupBase = settings.getString(Keys.realm.ldap_groupBase, "");
-		String groupMemberPattern = settings.getString(Keys.realm.ldap_groupMemberPattern, "(&(objectClass=group)(member=${dn}))");
+		String groupBase = settings.getString(Keys.realm.ldap.groupBase, "");
+		String groupMemberPattern = settings.getString(Keys.realm.ldap.groupMemberPattern, "(&(objectClass=group)(member=${dn}))");
 		
 		groupMemberPattern = StringUtils.replace(groupMemberPattern, "${dn}", loggingInUserDN);
 		groupMemberPattern = StringUtils.replace(groupMemberPattern, "${username}", simpleUsername);
@@ -224,8 +224,8 @@
 		return answer;		
 	}
 	
-	private UserModel createUserFromLdap(SearchResultEntry userEntry) {
-		UserModel answer = new UserModel(userEntry.getAttributeValue("cn"));
+	private UserModel createUserFromLdap(String simpleUserName, SearchResultEntry userEntry) {
+		UserModel answer = new UserModel(simpleUserName);
 		//If attributes other than user name ever from from LDAP, this is where to get them
 		
 		return answer;

--
Gitblit v1.9.1