From a5e762ba4ab82f0c6ef71d853c5103f19bbf8e22 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 11 Oct 2012 08:10:20 -0400 Subject: [PATCH] Tweak canFork description --- src/com/gitblit/Constants.java | 82 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 79 insertions(+), 3 deletions(-) diff --git a/src/com/gitblit/Constants.java b/src/com/gitblit/Constants.java index b9cd74a..ed48bd2 100644 --- a/src/com/gitblit/Constants.java +++ b/src/com/gitblit/Constants.java @@ -15,6 +15,10 @@ */ package com.gitblit; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + /** * Constant values used by Gitblit. @@ -30,17 +34,21 @@ // The build script extracts this exact line so be careful editing it // and only use A-Z a-z 0-9 .-_ in the string. - public static final String VERSION = "1.1.0"; + public static final String VERSION = "1.2.0-SNAPSHOT"; // The build script extracts this exact line so be careful editing it // and only use A-Z a-z 0-9 .-_ in the string. - public static final String VERSION_DATE = "2012-08-25"; + public static final String VERSION_DATE = "PENDING"; // The build script extracts this exact line so be careful editing it // and only use A-Z a-z 0-9 .-_ in the string. - public static final String JGIT_VERSION = "JGit 2.0.0 (201206130900-r)"; + public static final String JGIT_VERSION = "JGit 2.1.0 (201209190230-r)"; public static final String ADMIN_ROLE = "#admin"; + + public static final String FORK_ROLE = "#fork"; + + public static final String CREATE_ROLE = "#create"; public static final String NOT_FEDERATED_ROLE = "#notfederated"; @@ -305,4 +313,72 @@ return null; } } + + /** + * The access permissions available for a repository. + */ + public static enum AccessPermission { + NONE("N"), VIEW("V"), CLONE("R"), PUSH("RW"), CREATE("RWC"), DELETE("RWD"), REWIND("RW+"); + + public static AccessPermission LEGACY = REWIND; + + public final String code; + + private AccessPermission(String code) { + this.code = code; + } + + public boolean atLeast(AccessPermission perm) { + return ordinal() >= perm.ordinal(); + } + + public boolean exceeds(AccessPermission perm) { + return ordinal() > perm.ordinal(); + } + + public String asRole(String repository) { + return code + ":" + repository; + } + + @Override + public String toString() { + return code; + } + + public static AccessPermission permissionFromRole(String role) { + String [] fields = role.split(":", 2); + if (fields.length == 1) { + // legacy/undefined assume full permissions + return AccessPermission.LEGACY; + } else { + // code:repository + return AccessPermission.fromCode(fields[0]); + } + } + + public static String repositoryFromRole(String role) { + String [] fields = role.split(":", 2); + if (fields.length == 1) { + // legacy/undefined assume full permissions + return role; + } else { + // code:repository + return fields[1]; + } + } + + public static AccessPermission fromCode(String code) { + for (AccessPermission perm : values()) { + if (perm.code.equalsIgnoreCase(code)) { + return perm; + } + } + return AccessPermission.NONE; + } + } + + @Documented + @Retention(RetentionPolicy.RUNTIME) + public @interface Unused { + } } -- Gitblit v1.9.1