From f3b625d298bab922c64192c25914e352bd87e59e Mon Sep 17 00:00:00 2001
From: John Crygier <john.crygier@aon.com>
Date: Tue, 10 Apr 2012 13:48:06 -0400
Subject: [PATCH] Rework LDAP implementation with unboundid.  Also allows for an LDAP server to be started with Gitblit GO (backed by an LDIF file).

---
 src/com/gitblit/GitblitUserService.java |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/com/gitblit/GitblitUserService.java b/src/com/gitblit/GitblitUserService.java
index 1514b6b..ddb3ca7 100644
--- a/src/com/gitblit/GitblitUserService.java
+++ b/src/com/gitblit/GitblitUserService.java
@@ -156,9 +156,12 @@
 	public boolean updateUserModel(String username, UserModel model) {
 		if (supportsCredentialChanges()) {
 			if (!supportsTeamMembershipChanges()) {
-				//  teams are externally controlled
+				//  teams are externally controlled - copy from original model
+				UserModel existingModel = getUserModel(username);
+				
 				model = DeepCopier.copy(model);
 				model.teams.clear();
+				model.teams.addAll(existingModel.teams);
 			}
 			return serviceImpl.updateUserModel(username, model);
 		}
@@ -166,9 +169,12 @@
 			// passwords are not persisted by the backing user service
 			model.password = null;
 			if (!supportsTeamMembershipChanges()) {
-				//  teams are externally controlled
+				//  teams are externally controlled- copy from original model
+				UserModel existingModel = getUserModel(username);
+				
 				model = DeepCopier.copy(model);
 				model.teams.clear();
+				model.teams.addAll(existingModel.teams);
 			}
 			return serviceImpl.updateUserModel(username, model);
 		}
@@ -228,9 +234,12 @@
 	@Override
 	public boolean updateTeamModel(String teamname, TeamModel model) {
 		if (!supportsTeamMembershipChanges()) {
-			// teams are externally controlled
+			// teams are externally controlled - copy from original model
+			TeamModel existingModel = getTeamModel(teamname);
+			
 			model = DeepCopier.copy(model);
 			model.users.clear();
+			model.users.addAll(existingModel.users);
 		}
 		return serviceImpl.updateTeamModel(teamname, model);
 	}

--
Gitblit v1.9.1