summaryrefslogtreecommitdiffstats
path: root/src/com/gitblit/GitblitUserService.java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2012-04-06 18:01:58 -0400
committerJames Moger <james.moger@gitblit.com>2012-04-06 18:01:58 -0400
commit6cca8699f98a606ff19e88d40a8a2535fdc340e7 (patch)
treeb4725b6edbed868e10e6edaae049a7423f4f3008 /src/com/gitblit/GitblitUserService.java
parentd58f8efd44c73a649aa92e590cb138ee4507ac99 (diff)
downloadgitblit-6cca8699f98a606ff19e88d40a8a2535fdc340e7.tar.gz
gitblit-6cca8699f98a606ff19e88d40a8a2535fdc340e7.zip
Skeleton LdapUserService based on John Cryiger's implementation
Diffstat (limited to 'src/com/gitblit/GitblitUserService.java')
-rw-r--r--src/com/gitblit/GitblitUserService.java38
1 files changed, 36 insertions, 2 deletions
diff --git a/src/com/gitblit/GitblitUserService.java b/src/com/gitblit/GitblitUserService.java
index 7462af08..1514b6b9 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,27 @@ 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
+ 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 @@ public class GitblitUserService implements IUserService {
@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);
}