From c658df9e87d65b08d5482cf04489cb0532ff83dd Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sat, 13 Oct 2012 10:50:35 -0400
Subject: [PATCH] Merge branch 'master' of https://github.com/Mrbytes/gitblit

---
 src/com/gitblit/GitblitUserService.java |   44 ++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/src/com/gitblit/GitblitUserService.java b/src/com/gitblit/GitblitUserService.java
index 1514b6b..141ad8f 100644
--- a/src/com/gitblit/GitblitUserService.java
+++ b/src/com/gitblit/GitblitUserService.java
@@ -118,6 +118,16 @@
 	}
 
 	@Override
+	public boolean supportsDisplayNameChanges() {
+		return serviceImpl.supportsDisplayNameChanges();
+	}
+
+	@Override
+	public boolean supportsEmailAddressChanges() {
+		return serviceImpl.supportsEmailAddressChanges();
+	}
+
+	@Override
 	public boolean supportsTeamMembershipChanges() {
 		return serviceImpl.supportsTeamMembershipChanges();
 	}
@@ -128,7 +138,7 @@
 	}
 
 	@Override
-	public char[] getCookie(UserModel model) {
+	public String getCookie(UserModel model) {
 		return serviceImpl.getCookie(model);
 	}
 
@@ -140,6 +150,11 @@
 	@Override
 	public UserModel authenticate(String username, char[] password) {
 		return serviceImpl.authenticate(username, password);
+	}
+	
+	@Override
+	public void logout(UserModel user) {
+		serviceImpl.logout(user);
 	}
 
 	@Override
@@ -153,12 +168,20 @@
 	}
 
 	@Override
+	public boolean updateUserModels(List<UserModel> models) {
+		return serviceImpl.updateUserModels(models);
+	}
+
+	@Override
 	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 +189,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);
 		}
@@ -211,6 +237,7 @@
 	}
 
 	@Override
+	@Deprecated
 	public boolean setTeamnamesForRepositoryRole(String role, List<String> teamnames) {
 		return serviceImpl.setTeamnamesForRepositoryRole(role, teamnames);
 	}
@@ -226,11 +253,19 @@
 	}
 
 	@Override
+	public boolean updateTeamModels(List<TeamModel> models) {
+		return serviceImpl.updateTeamModels(models);
+	}
+
+	@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);
 	}
@@ -251,6 +286,7 @@
 	}
 
 	@Override
+	@Deprecated
 	public boolean setUsernamesForRepositoryRole(String role, List<String> usernames) {
 		return serviceImpl.setUsernamesForRepositoryRole(role, usernames);
 	}

--
Gitblit v1.9.1