From 6cca8699f98a606ff19e88d40a8a2535fdc340e7 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 06 Apr 2012 18:01:58 -0400 Subject: [PATCH] Skeleton LdapUserService based on John Cryiger's implementation --- src/com/gitblit/GitblitUserService.java | 38 ++++++++++++++++++++++++++++++++++++-- 1 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/com/gitblit/GitblitUserService.java b/src/com/gitblit/GitblitUserService.java index 7462af0..1514b6b 100644 --- a/src/com/gitblit/GitblitUserService.java +++ b/src/com/gitblit/GitblitUserService.java @@ -25,6 +25,7 @@ import com.gitblit.models.TeamModel; import com.gitblit.models.UserModel; +import com.gitblit.utils.DeepCopier; /** * This class wraps the default user service and is recommended as the starting @@ -112,6 +113,16 @@ } @Override + public boolean supportsCredentialChanges() { + return serviceImpl.supportsCredentialChanges(); + } + + @Override + public boolean supportsTeamMembershipChanges() { + return serviceImpl.supportsTeamMembershipChanges(); + } + + @Override public boolean supportsCookies() { return serviceImpl.supportsCookies(); } @@ -143,9 +154,27 @@ @Override public boolean updateUserModel(String username, UserModel model) { - return serviceImpl.updateUserModel(username, model); + if (supportsCredentialChanges()) { + if (!supportsTeamMembershipChanges()) { + // teams are externally controlled + model = DeepCopier.copy(model); + model.teams.clear(); + } + return serviceImpl.updateUserModel(username, model); + } + if (model.username.equals(username)) { + // passwords are not persisted by the backing user service + model.password = null; + if (!supportsTeamMembershipChanges()) { + // teams are externally controlled + model = DeepCopier.copy(model); + model.teams.clear(); + } + return serviceImpl.updateUserModel(username, model); + } + logger.error("Users can not be renamed!"); + return false; } - @Override public boolean deleteUserModel(UserModel model) { return serviceImpl.deleteUserModel(model); @@ -198,6 +227,11 @@ @Override public boolean updateTeamModel(String teamname, TeamModel model) { + if (!supportsTeamMembershipChanges()) { + // teams are externally controlled + model = DeepCopier.copy(model); + model.users.clear(); + } return serviceImpl.updateTeamModel(teamname, model); } -- Gitblit v1.9.1