From 13417cf9c6eec555b51da49742e47939d2f5715b Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 19 Oct 2012 22:47:33 -0400 Subject: [PATCH] Exclude submodules from zip downloads (issue 151) --- src/com/gitblit/GitblitUserService.java | 76 ++++++++++++++++++++++++++++++++++++- 1 files changed, 73 insertions(+), 3 deletions(-) diff --git a/src/com/gitblit/GitblitUserService.java b/src/com/gitblit/GitblitUserService.java index 7462af0..141ad8f 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,12 +113,32 @@ } @Override + public boolean supportsCredentialChanges() { + return serviceImpl.supportsCredentialChanges(); + } + + @Override + public boolean supportsDisplayNameChanges() { + return serviceImpl.supportsDisplayNameChanges(); + } + + @Override + public boolean supportsEmailAddressChanges() { + return serviceImpl.supportsEmailAddressChanges(); + } + + @Override + public boolean supportsTeamMembershipChanges() { + return serviceImpl.supportsTeamMembershipChanges(); + } + + @Override public boolean supportsCookies() { return serviceImpl.supportsCookies(); } @Override - public char[] getCookie(UserModel model) { + public String getCookie(UserModel model) { return serviceImpl.getCookie(model); } @@ -129,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 @@ -142,10 +168,39 @@ } @Override - public boolean updateUserModel(String username, UserModel model) { - return serviceImpl.updateUserModel(username, model); + 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 - 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); + } + if (model.username.equals(username)) { + // passwords are not persisted by the backing user service + model.password = null; + if (!supportsTeamMembershipChanges()) { + // 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); + } + logger.error("Users can not be renamed!"); + return false; + } @Override public boolean deleteUserModel(UserModel model) { return serviceImpl.deleteUserModel(model); @@ -182,6 +237,7 @@ } @Override + @Deprecated public boolean setTeamnamesForRepositoryRole(String role, List<String> teamnames) { return serviceImpl.setTeamnamesForRepositoryRole(role, teamnames); } @@ -197,7 +253,20 @@ } @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 - 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); } @@ -217,6 +286,7 @@ } @Override + @Deprecated public boolean setUsernamesForRepositoryRole(String role, List<String> usernames) { return serviceImpl.setUsernamesForRepositoryRole(role, usernames); } -- Gitblit v1.9.1