diff options
author | James Moger <james.moger@gitblit.com> | 2012-10-29 23:22:54 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2012-10-29 23:22:54 -0400 |
commit | 092f0a62302e87f44403ba24fc519c65534dbfff (patch) | |
tree | 340b5c18c29c1662d790fbf0d4422702c92eb3ce /src/com/gitblit/models | |
parent | 8bc725871269aa47f8ef6db086a4cfedc75ef140 (diff) | |
download | gitblit-092f0a62302e87f44403ba24fc519c65534dbfff.tar.gz gitblit-092f0a62302e87f44403ba24fc519c65534dbfff.zip |
Stabilizing and polishing permissions ui. Still in-progress.
Diffstat (limited to 'src/com/gitblit/models')
-rw-r--r-- | src/com/gitblit/models/RegistrantAccessPermission.java | 36 | ||||
-rw-r--r-- | src/com/gitblit/models/TeamModel.java | 10 | ||||
-rw-r--r-- | src/com/gitblit/models/UserModel.java | 18 |
3 files changed, 54 insertions, 10 deletions
diff --git a/src/com/gitblit/models/RegistrantAccessPermission.java b/src/com/gitblit/models/RegistrantAccessPermission.java index 4a560d43..7346d310 100644 --- a/src/com/gitblit/models/RegistrantAccessPermission.java +++ b/src/com/gitblit/models/RegistrantAccessPermission.java @@ -18,6 +18,7 @@ package com.gitblit.models; import java.io.Serializable; import com.gitblit.Constants.AccessPermission; +import com.gitblit.Constants.PermissionType; import com.gitblit.Constants.RegistrantType; import com.gitblit.utils.StringUtils; @@ -32,23 +33,27 @@ public class RegistrantAccessPermission implements Serializable, Comparable<Regi public String registrant; public AccessPermission permission; - public RegistrantType type; - public boolean isExplicit; + public RegistrantType registrantType; + public PermissionType permissionType; + public boolean isEditable; - public RegistrantAccessPermission() { - isExplicit = true; + public RegistrantAccessPermission(RegistrantType registrantType) { + this.registrantType = registrantType; + this.permissionType = PermissionType.EXPLICIT; + this.isEditable = true; } - public RegistrantAccessPermission(String registrant, AccessPermission permission, boolean isExplicit, RegistrantType type) { + public RegistrantAccessPermission(String registrant, AccessPermission permission, PermissionType permissionType, RegistrantType registrantType, boolean isEditable) { this.registrant = registrant; this.permission = permission; - this.isExplicit = isExplicit; - this.type = type; + this.permissionType = permissionType; + this.registrantType = registrantType; + this.isEditable = isEditable; } @Override public int compareTo(RegistrantAccessPermission p) { - switch (type) { + switch (registrantType) { case REPOSITORY: return StringUtils.compareRepositoryNames(registrant, p.registrant); default: @@ -57,6 +62,21 @@ public class RegistrantAccessPermission implements Serializable, Comparable<Regi } @Override + public int hashCode() { + return registrant.hashCode(); + } + + @Override + public boolean equals(Object o) { + if (o instanceof RegistrantAccessPermission) { + RegistrantAccessPermission p = (RegistrantAccessPermission) o; + return registrant.equals(p.registrant); + } + + return false; + } + + @Override public String toString() { return permission.asRole(registrant); } diff --git a/src/com/gitblit/models/TeamModel.java b/src/com/gitblit/models/TeamModel.java index 7d557db9..e5e3b097 100644 --- a/src/com/gitblit/models/TeamModel.java +++ b/src/com/gitblit/models/TeamModel.java @@ -27,6 +27,7 @@ import java.util.Set; import com.gitblit.Constants.AccessPermission;
import com.gitblit.Constants.AccessRestrictionType;
+import com.gitblit.Constants.PermissionType;
import com.gitblit.Constants.RegistrantType;
import com.gitblit.Constants.Unused;
import com.gitblit.utils.StringUtils;
@@ -98,7 +99,14 @@ public class TeamModel implements Serializable, Comparable<TeamModel> { public List<RegistrantAccessPermission> getRepositoryPermissions() {
List<RegistrantAccessPermission> list = new ArrayList<RegistrantAccessPermission>();
for (Map.Entry<String, AccessPermission> entry : permissions.entrySet()) {
- list.add(new RegistrantAccessPermission(entry.getKey(), entry.getValue(), true, RegistrantType.REPOSITORY));
+ String registrant = entry.getKey();
+ boolean editable = true;
+ PermissionType pType = PermissionType.EXPLICIT;
+ if (StringUtils.findInvalidCharacter(registrant) != null) {
+ // a regex will have at least 1 invalid character
+ pType = PermissionType.REGEX;
+ }
+ list.add(new RegistrantAccessPermission(registrant, entry.getValue(), pType, RegistrantType.REPOSITORY, editable));
}
Collections.sort(list);
return list;
diff --git a/src/com/gitblit/models/UserModel.java b/src/com/gitblit/models/UserModel.java index d7bc2935..22f250cc 100644 --- a/src/com/gitblit/models/UserModel.java +++ b/src/com/gitblit/models/UserModel.java @@ -28,6 +28,7 @@ import java.util.Set; import com.gitblit.Constants.AccessPermission;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.Constants.AuthorizationControl;
+import com.gitblit.Constants.PermissionType;
import com.gitblit.Constants.RegistrantType;
import com.gitblit.Constants.Unused;
import com.gitblit.utils.ArrayUtils;
@@ -137,7 +138,17 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel> public List<RegistrantAccessPermission> getRepositoryPermissions() {
List<RegistrantAccessPermission> list = new ArrayList<RegistrantAccessPermission>();
for (Map.Entry<String, AccessPermission> entry : permissions.entrySet()) {
- list.add(new RegistrantAccessPermission(entry.getKey(), entry.getValue(), true, RegistrantType.REPOSITORY));
+ String registrant = entry.getKey();
+ boolean editable = true;
+ PermissionType pType = PermissionType.EXPLICIT;
+ if (isMyPersonalRepository(registrant)) {
+ pType = PermissionType.OWNER;
+ editable = false;
+ } else if (StringUtils.findInvalidCharacter(registrant) != null) {
+ // a regex will have at least 1 invalid character
+ pType = PermissionType.REGEX;
+ }
+ list.add(new RegistrantAccessPermission(registrant, entry.getValue(), pType, RegistrantType.REPOSITORY, editable));
}
Collections.sort(list);
return list;
@@ -494,4 +505,9 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel> // Default UserModel doesn't implement branch-level security. Other Realms (i.e. Gerrit) may override this method.
return hasRepositoryPermission(repositoryName);
}
+
+ public boolean isMyPersonalRepository(String repository) {
+ String projectPath = StringUtils.getFirstPathElement(repository);
+ return !StringUtils.isEmpty(projectPath) && projectPath.equalsIgnoreCase("~" + username);
+ }
}
|