From ba6150d1712d5f5986e72333831940a46316aab3 Mon Sep 17 00:00:00 2001 From: James Moger Date: Fri, 2 Nov 2012 16:52:41 -0400 Subject: Permission filtering in web ui Present the mutable permissions by default. Allow the administrator or owner to toggle the displayed permissions to see how the user and team permissions are applied to a repository. --- .../gitblit/models/RegistrantAccessPermission.java | 51 +++++++++++++++++++++- src/com/gitblit/models/UserModel.java | 25 ++++++++++- 2 files changed, 73 insertions(+), 3 deletions(-) (limited to 'src/com/gitblit/models') diff --git a/src/com/gitblit/models/RegistrantAccessPermission.java b/src/com/gitblit/models/RegistrantAccessPermission.java index 4bdc2da4..8f4049a8 100644 --- a/src/com/gitblit/models/RegistrantAccessPermission.java +++ b/src/com/gitblit/models/RegistrantAccessPermission.java @@ -63,18 +63,67 @@ public class RegistrantAccessPermission implements Serializable, Comparable list.add(new RegistrantAccessPermission(registrant, ap, pType, RegistrantType.REPOSITORY, source, mutable)); } Collections.sort(list); - return list; + + // include immutable team permissions, being careful to preserve order + Set set = new LinkedHashSet(list); + for (TeamModel team : teams) { + for (RegistrantAccessPermission teamPermission : team.getRepositoryPermissions()) { + // we can not change an inherited team permission, though we can override + teamPermission.registrantType = RegistrantType.REPOSITORY; + teamPermission.permissionType = PermissionType.TEAM; + teamPermission.source = team.name; + teamPermission.mutable = false; + set.add(teamPermission); + } + } + return new ArrayList(set); } /** @@ -253,6 +267,13 @@ public class UserModel implements Principal, Serializable, Comparable ap.permission = AccessPermission.NONE; ap.mutable = false; + if (AccessRestrictionType.NONE.equals(repository.accessRestriction)) { + // anonymous rewind + ap.permissionType = PermissionType.ADMINISTRATOR; + ap.permission = AccessPermission.REWIND; + return ap; + } + // administrator if (canAdmin()) { ap.permissionType = PermissionType.ADMINISTRATOR; @@ -277,7 +298,7 @@ public class UserModel implements Principal, Serializable, Comparable } if (AuthorizationControl.AUTHENTICATED.equals(repository.authorizationControl) && isAuthenticated) { - // AUTHENTICATED is a shortcut for authorizing all logged-in users RW access + // AUTHENTICATED is a shortcut for authorizing all logged-in users RW+ access ap.permission = AccessPermission.REWIND; return ap; } -- cgit v1.2.3