diff options
author | kaspars.kurms <kaspars.kurms@ctco.lv> | 2016-07-11 12:55:21 +0300 |
---|---|---|
committer | Florian Zschocke <f.zschocke+git@gmail.com> | 2022-08-07 13:35:34 +0200 |
commit | ea9526d456219a063296ddce2f29c9de802ffa8c (patch) | |
tree | cb40856fa8d956f3eef0e1c511c15a58880543e0 /src/main/java/com/gitblit | |
parent | f0dce60949ad38a78289253f5889651e0d803c04 (diff) | |
download | gitblit-ea9526d456219a063296ddce2f29c9de802ffa8c.tar.gz gitblit-ea9526d456219a063296ddce2f29c9de802ffa8c.zip |
fix user effective permission display if users is in multiple groups with different permissions
Diffstat (limited to 'src/main/java/com/gitblit')
-rw-r--r-- | src/main/java/com/gitblit/models/UserModel.java | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/models/UserModel.java b/src/main/java/com/gitblit/models/UserModel.java index 1d9e413b..1d95569f 100644 --- a/src/main/java/com/gitblit/models/UserModel.java +++ b/src/main/java/com/gitblit/models/UserModel.java @@ -136,6 +136,7 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel> // include immutable team permissions, being careful to preserve order
Set<RegistrantAccessPermission> set = new LinkedHashSet<RegistrantAccessPermission>(list);
+ ArrayList<RegistrantAccessPermission> arrayList = new ArrayList<RegistrantAccessPermission>(list);
for (TeamModel team : teams) {
for (RegistrantAccessPermission teamPermission : team.getRepositoryPermissions()) {
// we can not change an inherited team permission, though we can override
@@ -143,6 +144,18 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel> teamPermission.permissionType = PermissionType.TEAM;
teamPermission.source = team.name;
teamPermission.mutable = false;
+ if(arrayList.contains(teamPermission) && arrayList.get(arrayList.indexOf(teamPermission)).permissionType != PermissionType.REGEX){
+ //checking either to replace permission in set or not
+ if(teamPermission.permission.compareTo(arrayList.get(arrayList.indexOf(teamPermission)).permission) > 0 ){
+ arrayList.remove(teamPermission);
+ arrayList.add(teamPermission);
+ set.remove(teamPermission);
+ set.add(teamPermission);
+ }
+ }
+ else{
+ arrayList.add(teamPermission);
+ }
set.add(teamPermission);
}
}
|