From d8a0f1e6e9d2420be31200cf0554336e84eec843 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 23 Nov 2012 10:38:38 -0500 Subject: [PATCH] Revised Gitblit GO certificate generation to use new X509 utility functions --- src/com/gitblit/models/RegistrantAccessPermission.java | 63 +++++++++++++++++++++++++++++-- 1 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/com/gitblit/models/RegistrantAccessPermission.java b/src/com/gitblit/models/RegistrantAccessPermission.java index 2d0b90b..8f4049a 100644 --- a/src/com/gitblit/models/RegistrantAccessPermission.java +++ b/src/com/gitblit/models/RegistrantAccessPermission.java @@ -35,7 +35,7 @@ public AccessPermission permission; public RegistrantType registrantType; public PermissionType permissionType; - public boolean isEditable; + public boolean mutable; public String source; public RegistrantAccessPermission() { @@ -44,16 +44,16 @@ public RegistrantAccessPermission(RegistrantType registrantType) { this.registrantType = registrantType; this.permissionType = PermissionType.EXPLICIT; - this.isEditable = true; + this.mutable = true; } - public RegistrantAccessPermission(String registrant, AccessPermission permission, PermissionType permissionType, RegistrantType registrantType, String source, boolean isEditable) { + public RegistrantAccessPermission(String registrant, AccessPermission permission, PermissionType permissionType, RegistrantType registrantType, String source, boolean mutable) { this.registrant = registrant; this.permission = permission; this.permissionType = permissionType; this.registrantType = registrantType; this.source = source; - this.isEditable = isEditable; + this.mutable = mutable; } public boolean isAdmin() { @@ -63,14 +63,67 @@ public boolean isOwner() { return PermissionType.OWNER.equals(permissionType); } + + public boolean isExplicit() { + return PermissionType.EXPLICIT.equals(permissionType); + } + public boolean isRegex() { + return PermissionType.REGEX.equals(permissionType); + } + + public boolean isTeam() { + return PermissionType.TEAM.equals(permissionType); + } + + public boolean isMissing() { + return PermissionType.MISSING.equals(permissionType); + } + + public int getScore() { + switch (registrantType) { + case REPOSITORY: + if (isAdmin()) { + return 0; + } + if (isOwner()) { + return 1; + } + if (isExplicit()) { + return 2; + } + if (isRegex()) { + return 3; + } + if (isTeam()) { + return 4; + } + default: + return 0; + } + } + @Override public int compareTo(RegistrantAccessPermission p) { switch (registrantType) { case REPOSITORY: + // repository permissions are sorted in score order + // to convey the order in which permissions are tested + int score1 = getScore(); + int score2 = p.getScore(); + if (score1 <= 2 && score2 <= 2) { + // group admin, owner, and explicit together + return StringUtils.compareRepositoryNames(registrant, p.registrant); + } + if (score1 < score2) { + return -1; + } else if (score2 < score1) { + return 1; + } return StringUtils.compareRepositoryNames(registrant, p.registrant); default: - return registrant.toLowerCase().compareTo(p.registrant.toLowerCase()); + // user and team permissions are string sorted + return registrant.toLowerCase().compareTo(p.registrant.toLowerCase()); } } -- Gitblit v1.9.1