diff options
author | Florian Zschocke <f.zschocke+git@gmail.com> | 2022-08-07 14:27:04 +0200 |
---|---|---|
committer | Florian Zschocke <f.zschocke+git@gmail.com> | 2022-08-07 14:27:32 +0200 |
commit | f1a20ea57d20735e54507ddb8cc7197b20030da9 (patch) | |
tree | 49806318932d14b3c9ea6bfe81f59d89c8252000 /src/main | |
parent | f0dce60949ad38a78289253f5889651e0d803c04 (diff) | |
parent | f2fc9cc57b8b70f5e521e7c56b5ee56db3bab35c (diff) | |
download | gitblit-f1a20ea57d20735e54507ddb8cc7197b20030da9.tar.gz gitblit-f1a20ea57d20735e54507ddb8cc7197b20030da9.zip |
Merge branch 'felazuris-fixpermdisplay' into master
This pulls in the rebased branch from PR #1100.
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/gitblit/models/UserModel.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/main/java/com/gitblit/models/UserModel.java b/src/main/java/com/gitblit/models/UserModel.java index 1d9e413b..b0933093 100644 --- a/src/main/java/com/gitblit/models/UserModel.java +++ b/src/main/java/com/gitblit/models/UserModel.java @@ -110,7 +110,7 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel> * @return the user's list of permissions
*/
public List<RegistrantAccessPermission> getRepositoryPermissions() {
- List<RegistrantAccessPermission> list = new ArrayList<RegistrantAccessPermission>();
+ List<RegistrantAccessPermission> list = new ArrayList<>();
if (canAdmin()) {
// user has REWIND access to all repositories
return list;
@@ -135,7 +135,6 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel> Collections.sort(list);
// include immutable team permissions, being careful to preserve order
- Set<RegistrantAccessPermission> set = new LinkedHashSet<RegistrantAccessPermission>(list);
for (TeamModel team : teams) {
for (RegistrantAccessPermission teamPermission : team.getRepositoryPermissions()) {
// we can not change an inherited team permission, though we can override
@@ -143,10 +142,17 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel> teamPermission.permissionType = PermissionType.TEAM;
teamPermission.source = team.name;
teamPermission.mutable = false;
- set.add(teamPermission);
+ int i = list.indexOf(teamPermission);
+ if (i < 0) list.add(teamPermission);
+ else {
+ RegistrantAccessPermission lp = list.get(i);
+ if (teamPermission.permission.exceeds(lp.permission)) {
+ list.set(i, teamPermission);
+ }
+ }
}
}
- return new ArrayList<RegistrantAccessPermission>(set);
+ return list;
}
/**
|