diff options
author | James Moger <james.moger@gitblit.com> | 2012-04-24 14:19:40 -0700 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2012-04-24 14:19:40 -0700 |
commit | 0cb7a9c08cfaebeace058dc806099051f163f172 (patch) | |
tree | 78caa4a7fec75adbec367a1026b36d9e8ebee2e4 /src/com/gitblit/GitblitUserService.java | |
parent | a9eb6b1105cd47f00ae45dacda9af8e829ade191 (diff) | |
parent | 3d699cb14d6c891338567c562f7fe8d81e318b1c (diff) | |
download | gitblit-0cb7a9c08cfaebeace058dc806099051f163f172.tar.gz gitblit-0cb7a9c08cfaebeace058dc806099051f163f172.zip |
Merge pull request #12 from jcrygier/ldap_unboundid
Ldap unboundid
Diffstat (limited to 'src/com/gitblit/GitblitUserService.java')
-rw-r--r-- | src/com/gitblit/GitblitUserService.java | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/src/com/gitblit/GitblitUserService.java b/src/com/gitblit/GitblitUserService.java index 7462af08..ddb3ca77 100644 --- a/src/com/gitblit/GitblitUserService.java +++ b/src/com/gitblit/GitblitUserService.java @@ -25,6 +25,7 @@ import org.slf4j.LoggerFactory; 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 @@ public class GitblitUserService implements IUserService { }
@Override
+ public boolean supportsCredentialChanges() {
+ return serviceImpl.supportsCredentialChanges();
+ }
+
+ @Override
+ public boolean supportsTeamMembershipChanges() {
+ return serviceImpl.supportsTeamMembershipChanges();
+ }
+
+ @Override
public boolean supportsCookies() {
return serviceImpl.supportsCookies();
}
@@ -143,9 +154,33 @@ public class GitblitUserService implements IUserService { @Override
public boolean updateUserModel(String username, UserModel model) {
- return serviceImpl.updateUserModel(username, 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);
@@ -198,6 +233,14 @@ public class GitblitUserService implements IUserService { @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);
}
|