From 856c8a2ad521064d69b2b50003c1df382d375013 Mon Sep 17 00:00:00 2001
From: Marcin Floryan <marcin.floryan@gmail.com>
Date: Sat, 03 Nov 2012 15:15:22 -0400
Subject: [PATCH] Download progress - CR character behaves as expected on Windows but not on other platforms.
---
src/com/gitblit/GitblitUserService.java | 98 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 92 insertions(+), 6 deletions(-)
diff --git a/src/com/gitblit/GitblitUserService.java b/src/com/gitblit/GitblitUserService.java
index 97e1a40..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
@@ -57,6 +58,7 @@
public void setup(IStoredSettings settings) {
File realmFile = GitBlit.getFileOrFolder(Keys.realm.userService, "users.conf");
serviceImpl = createUserService(realmFile);
+ logger.info("GUS delegating to " + serviceImpl.toString());
}
@SuppressWarnings("deprecation")
@@ -72,7 +74,7 @@
assert service != null;
- if (realmFile.exists()) {
+ if (!realmFile.exists()) {
// Create the Administrator account for a new realm file
try {
realmFile.createNewFile();
@@ -94,8 +96,8 @@
logger.info(MessageFormat.format("Automatically creating {0} based on {1}",
usersConfig.getAbsolutePath(), realmFile.getAbsolutePath()));
ConfigUserService configService = new ConfigUserService(usersConfig);
- for (String username : serviceImpl.getAllUsernames()) {
- UserModel userModel = serviceImpl.getUserModel(username);
+ for (String username : service.getAllUsernames()) {
+ UserModel userModel = service.getUserModel(username);
configService.updateUserModel(userModel);
}
}
@@ -104,6 +106,31 @@
}
return service;
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName();
+ }
+
+ @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() {
@@ -111,7 +138,7 @@
}
@Override
- public char[] getCookie(UserModel model) {
+ public String getCookie(UserModel model) {
return serviceImpl.getCookie(model);
}
@@ -123,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
@@ -136,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);
@@ -156,8 +217,18 @@
}
@Override
+ public List<UserModel> getAllUsers() {
+ return serviceImpl.getAllUsers();
+ }
+
+ @Override
public List<String> getAllTeamNames() {
return serviceImpl.getAllTeamNames();
+ }
+
+ @Override
+ public List<TeamModel> getAllTeams() {
+ return serviceImpl.getAllTeams();
}
@Override
@@ -166,6 +237,7 @@
}
@Override
+ @Deprecated
public boolean setTeamnamesForRepositoryRole(String role, List<String> teamnames) {
return serviceImpl.setTeamnamesForRepositoryRole(role, teamnames);
}
@@ -181,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);
}
@@ -201,6 +286,7 @@
}
@Override
+ @Deprecated
public boolean setUsernamesForRepositoryRole(String role, List<String> usernames) {
return serviceImpl.setUsernamesForRepositoryRole(role, usernames);
}
--
Gitblit v1.9.1