From a4231d30c4d2765c80f57df79cd1d4d39a9795ea Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 30 Oct 2012 17:05:30 -0400 Subject: [PATCH] Added null checkinng and logging for edit user permissions (issue 155) --- src/com/gitblit/client/EditUserDialog.java | 37 ++++++++++++++++++++++++++++++------- 1 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/com/gitblit/client/EditUserDialog.java b/src/com/gitblit/client/EditUserDialog.java index da75867..070926d 100644 --- a/src/com/gitblit/client/EditUserDialog.java +++ b/src/com/gitblit/client/EditUserDialog.java @@ -46,6 +46,8 @@ import javax.swing.KeyStroke; import com.gitblit.Constants.AccessRestrictionType; +import com.gitblit.Constants.AuthorizationControl; +import com.gitblit.Constants.RegistrantType; import com.gitblit.Keys; import com.gitblit.models.RegistrantAccessPermission; import com.gitblit.models.RepositoryModel; @@ -158,7 +160,7 @@ notFederatedCheckbox)); final Insets _insets = new Insets(5, 5, 5, 5); - repositoryPalette = new RegistrantPermissionsPanel(); + repositoryPalette = new RegistrantPermissionsPanel(RegistrantType.REPOSITORY); teamsPalette = new JPalette<TeamModel>(); teamsPalette.setEnabled(settings.supportsTeamMembershipChanges); @@ -343,9 +345,32 @@ public void setRepositories(List<RepositoryModel> repositories, List<RegistrantAccessPermission> permissions) { List<String> restricted = new ArrayList<String>(); for (RepositoryModel repo : repositories) { - if (repo.accessRestriction.exceeds(AccessRestrictionType.NONE)) { - restricted.add(repo.name); + // exclude Owner or personal repositories + if (!repo.isOwner(username) && !repo.isUsersPersonalRepository(username)) { + if (repo.accessRestriction.exceeds(AccessRestrictionType.NONE) + && repo.authorizationControl.equals(AuthorizationControl.NAMED)) { + restricted.add(repo.name); + } } + } + StringUtils.sortRepositorynames(restricted); + + List<String> list = new ArrayList<String>(); + // repositories + list.add(".*"); + // all repositories excluding personal repositories + list.add("[^~].*"); + String lastProject = null; + for (String repo : restricted) { + String projectPath = StringUtils.getFirstPathElement(repo).toLowerCase(); + if (lastProject == null || !lastProject.equalsIgnoreCase(projectPath)) { + lastProject = projectPath; + if (!StringUtils.isEmpty(projectPath)) { + // regex for all repositories within a project + list.add(projectPath + "/.*"); + } + } + list.add(repo); } // remove repositories for which user already has a permission @@ -353,12 +378,10 @@ permissions = new ArrayList<RegistrantAccessPermission>(); } else { for (RegistrantAccessPermission rp : permissions) { - restricted.remove(rp.registrant); + list.remove(rp.registrant.toLowerCase()); } } - - StringUtils.sortRepositorynames(restricted); - repositoryPalette.setObjects(restricted, permissions); + repositoryPalette.setObjects(list, permissions); } public void setTeams(List<TeamModel> teams, List<TeamModel> selected) { -- Gitblit v1.9.1