diff options
author | James Moger <james.moger@gitblit.com> | 2012-11-01 09:12:55 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2012-11-01 09:12:55 -0400 |
commit | 7ba85bfa11c7fcab21ada61650fe30763aafd7b0 (patch) | |
tree | b08e6aa1a0f4dbd0a90eaa7257d348983721c40b /src/com/gitblit/client/EditUserDialog.java | |
parent | 40b07bca7d02438cd0d660f3b1713ffa86f6df76 (diff) | |
download | gitblit-7ba85bfa11c7fcab21ada61650fe30763aafd7b0.tar.gz gitblit-7ba85bfa11c7fcab21ada61650fe30763aafd7b0.zip |
Gracefully deal with missing repository in permissions ui (issue 155)
Diffstat (limited to 'src/com/gitblit/client/EditUserDialog.java')
-rw-r--r-- | src/com/gitblit/client/EditUserDialog.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/com/gitblit/client/EditUserDialog.java b/src/com/gitblit/client/EditUserDialog.java index 070926dd..e954fed6 100644 --- a/src/com/gitblit/client/EditUserDialog.java +++ b/src/com/gitblit/client/EditUserDialog.java @@ -27,8 +27,10 @@ import java.awt.event.KeyEvent; import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import javax.swing.ImageIcon;
@@ -47,6 +49,7 @@ import javax.swing.KeyStroke; import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.Constants.AuthorizationControl;
+import com.gitblit.Constants.PermissionType;
import com.gitblit.Constants.RegistrantType;
import com.gitblit.Keys;
import com.gitblit.models.RegistrantAccessPermission;
@@ -343,6 +346,7 @@ public class EditUserDialog extends JDialog { }
public void setRepositories(List<RepositoryModel> repositories, List<RegistrantAccessPermission> permissions) {
+ Map<String, RepositoryModel> repoMap = new HashMap<String, RepositoryModel>();
List<String> restricted = new ArrayList<String>();
for (RepositoryModel repo : repositories) {
// exclude Owner or personal repositories
@@ -352,6 +356,7 @@ public class EditUserDialog extends JDialog { restricted.add(repo.name);
}
}
+ repoMap.put(repo.name.toLowerCase(), repo);
}
StringUtils.sortRepositorynames(restricted);
@@ -381,6 +386,27 @@ public class EditUserDialog extends JDialog { list.remove(rp.registrant.toLowerCase());
}
}
+
+ // update owner and missing permissions for editing
+ for (RegistrantAccessPermission permission : permissions) {
+ if (permission.mutable && PermissionType.EXPLICIT.equals(permission.permissionType)) {
+ // Ensure this is NOT an owner permission - which is non-editable
+ // We don't know this from within the usermodel, ownership is a
+ // property of a repository.
+ RepositoryModel rm = repoMap.get(permission.registrant.toLowerCase());
+ if (rm == null) {
+ permission.permissionType = PermissionType.MISSING;
+ permission.mutable = false;
+ continue;
+ }
+ boolean isOwner = rm.isOwner(username);
+ if (isOwner) {
+ permission.permissionType = PermissionType.OWNER;
+ permission.mutable = false;
+ }
+ }
+ }
+
repositoryPalette.setObjects(list, permissions);
}
|