Merge branch 'stable-2.14' into stable-2.15 * stable-2.14: Format all Java files with google-java-format 1.6 GerritAuthFilter#doFilter: Remove unused chain parameter GerritWicketFilter: Remove unused SitePaths from constructor GitBlitServletModule: Remove unused injected constructor arguments Remove unnecessarily nested else-clauses GerritToGitBlitUserModel: Add missing case on switch GitBlitSettings: Open InputStream in try-with-resource Add missing @Override annotations Remove unused imports Remove redundant specification of types GerritAuthFilter: Remove declaration of unthrown exception Bazel: Harmonize names of external repositories Update external dependencies Change-Id: Ib9533d9097acc888ff493c9a3bd5904aa1eb2c81
diff --git a/BUILD b/BUILD index 5594a52..2593ebd 100644 --- a/BUILD +++ b/BUILD
@@ -3,6 +3,7 @@ gerrit_plugin( name = "gitblit", srcs = glob(["src/main/java/**/*.java"]), + resources = glob(["src/main/resources/**/*"]), manifest_entries = [ "Gerrit-PluginName: gitblit", "Gerrit-Module: com.googlesource.gerrit.plugins.gitblit.GitBlitModule", @@ -10,7 +11,6 @@ "Gerrit-InitStep: com.googlesource.gerrit.plugins.gitblit.GitBlitInitStep", "Gerrit-ReloadMode: restart", ], - resources = glob(["src/main/resources/**/*"]), deps = [ "@commons-codec//jar:neverlink", "@commons-io//jar", @@ -38,8 +38,8 @@ "@twiki-core//jar", "@unboundid//jar", "@waffle-jna//jar", - "@wicket-extensions//jar", "@wicket//jar", + "@wicket-extensions//jar", "@wikitext-core//jar", ], )
diff --git a/README.md b/README.md index a88175a..3289410 100644 --- a/README.md +++ b/README.md
@@ -21,7 +21,6 @@ $ git clone https://github.com/gitblit/gitblit.git $ cd gitblit && git checkout master - $ git fetch origin refs/pull/1168/head && git merge --no-edit FETCH_HEAD $ ant -DresourceFolderPrefix=static installMaven ### Gitblit plugin
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl index 7a98cc7..9097a8d 100644 --- a/external_plugin_deps.bzl +++ b/external_plugin_deps.bzl
@@ -136,16 +136,16 @@ ) # Lucene version must be aligned with the version in core Gerrit - LUCENE_VERS = "5.5.2" + LUCENE_VERS = "5.5.4" maven_jar( - name = "lucene-highlighter", - artifact = "org.apache.lucene:lucene-highlighter:" + LUCENE_VERS, - sha1 = "d127ac514e9df965ab0b57d92bbe0c68d3d145b8", + name = 'lucene-highlighter', + artifact = 'org.apache.lucene:lucene-highlighter:' + LUCENE_VERS, + sha1 = '433f53f03f1b14337c08d54e507a5410905376fa', ) maven_jar( - name = "lucene-memory", - artifact = "org.apache.lucene:lucene-memory:" + LUCENE_VERS, - sha1 = "7409db9863d8fbc265c27793c6cc7511304182c2", + name = 'lucene-memory', + artifact = 'org.apache.lucene:lucene-memory:' + LUCENE_VERS, + sha1 = '4dbdc2e1a24837722294762a9edb479f79092ab9', )
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java index b1f00bf..91197b7 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
@@ -61,7 +61,7 @@ private static final Logger log = LoggerFactory.getLogger(GitBlitServletModule.class); @Inject - public GitBlitServletModule(@PluginName final String name) { + public GitBlitServletModule(@PluginName String name) { log.info("Create GitBlitModule with name='" + name); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java index d0019b5..c1f8fed 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java
@@ -68,7 +68,7 @@ } public boolean doFilter( - final DynamicItem<WebSession> webSession, ServletRequest request, ServletResponse response) + DynamicItem<WebSession> webSession, ServletRequest request, ServletResponse response) throws IOException { HttpServletRequest httpRequest = (HttpServletRequest) request; @@ -82,8 +82,7 @@ } } - public boolean filterSessionAuth( - final DynamicItem<WebSession> webSession, HttpServletRequest request) { + public boolean filterSessionAuth(DynamicItem<WebSession> webSession, HttpServletRequest request) { request.setAttribute("gerrit-username", webSession.get().getUser().getUserName()); request.setAttribute("gerrit-token", webSession.get().getSessionId()); return true; @@ -98,7 +97,7 @@ return false; } - final byte[] decoded = new Base64().decode(hdr.substring(LIT_BASIC.length()).getBytes()); + byte[] decoded = new Base64().decode(hdr.substring(LIT_BASIC.length()).getBytes()); String usernamePassword = new String(decoded, MoreObjects.firstNonNull(request.getCharacterEncoding(), "UTF-8")); int splitPos = usernamePassword.indexOf(':');
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java index 3802743..f00cefc 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java
@@ -21,9 +21,12 @@ import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils; import com.google.gerrit.reviewdb.client.Project.NameKey; -import com.google.gerrit.server.project.NoSuchProjectException; -import com.google.gerrit.server.project.ProjectControl; -import com.google.gerrit.server.project.ProjectControl.Factory; +import com.google.gerrit.server.CurrentUser; +import com.google.gerrit.server.permissions.PermissionBackend; +import com.google.gerrit.server.permissions.PermissionBackend.ForProject; +import com.google.gerrit.server.permissions.ProjectPermission; +import com.google.gerrit.server.permissions.RefPermission; +import com.google.inject.Provider; import java.util.HashSet; import java.util.Set; @@ -44,40 +47,38 @@ public final Set<String> repositories = new HashSet<>(); public final Set<TeamModel> teams = new HashSet<>(); - private final transient ProjectControl.Factory projectControlFactory; + private final transient Provider<CurrentUser> userProvider; + private final transient PermissionBackend permissionBackend; // non-persisted fields public boolean isAuthenticated; public GerritToGitBlitUserModel(String username) { - this(username, null); + this(username, null, null); } public GerritToGitBlitUserModel( - String username, final ProjectControl.Factory projectControlFactory) { + String username, Provider<CurrentUser> userProvider, PermissionBackend permissionBackend) { super(username); this.username = username; this.isAuthenticated = true; - this.projectControlFactory = projectControlFactory; + this.userProvider = userProvider; + this.permissionBackend = permissionBackend; } - public GerritToGitBlitUserModel(final ProjectControl.Factory projectControlFactory) { + public GerritToGitBlitUserModel() { super(ANONYMOUS_USER); - this.projectControlFactory = projectControlFactory; + this.userProvider = null; + this.permissionBackend = null; } - @Deprecated - public boolean canAccessRepository(String repositoryName) { - boolean result = false; - - try { - ProjectControl control = projectControlFactory.controlFor(new NameKey(repositoryName)); - result = control != null; - } catch (NoSuchProjectException e) { - result = false; - } - - return result; + @Override + public boolean canView(RepositoryModel repository, String ref) { + return permissionBackend + .user(userProvider) + .project(new NameKey(StringUtils.stripDotGit(repository.name))) + .ref(ref) + .testOrFalse(RefPermission.READ); } @Override @@ -85,54 +86,29 @@ RepositoryModel repository, AccessRestrictionType ifRestriction, AccessPermission requirePermission) { - boolean result = false; - - try { - ProjectControl control = - projectControlFactory.controlFor(new NameKey(getRepositoryName(repository.name))); - - if (control == null) { - return false; - } - - switch (ifRestriction) { - case VIEW: - return !control.isHidden(); - case CLONE: - return control.canRunUploadPack(); - case PUSH: - return control.canRunReceivePack(); - case NONE: - default: - return true; - } - } catch (NoSuchProjectException e) { - result = false; + ForProject projectPermissions = + permissionBackend + .user(userProvider) + .project(new NameKey(StringUtils.stripDotGit(repository.name))); + switch (ifRestriction) { + case VIEW: + return projectPermissions.testOrFalse(ProjectPermission.ACCESS); + case CLONE: + return projectPermissions.testOrFalse(ProjectPermission.RUN_UPLOAD_PACK); + case PUSH: + return projectPermissions.testOrFalse(ProjectPermission.RUN_RECEIVE_PACK); + case NONE: + default: + return true; } - - return result; - } - - public String getRepositoryName(String name) { - if (name.endsWith(".git")) { - name = name.substring(0, name.length() - 4); - } - return name; } @Override public boolean hasRepositoryPermission(String name) { - boolean result = false; - - try { - name = getRepositoryName(name); - ProjectControl control = projectControlFactory.controlFor(new NameKey(name)); - result = control != null && !control.isHidden(); - } catch (NoSuchProjectException e) { - result = false; - } - - return result; + return permissionBackend + .user(userProvider) + .project(new NameKey(StringUtils.stripDotGit(name))) + .testOrFalse(ProjectPermission.ACCESS); } public boolean hasTeamAccess(String repositoryName) { @@ -202,7 +178,7 @@ return username.compareTo(o.username); } - public static UserModel getAnonymous(Factory projectControl) { - return new GerritToGitBlitUserModel(ANONYMOUS_USER, projectControl); + public static UserModel getAnonymous() { + return new GerritToGitBlitUserModel(ANONYMOUS_USER, null, null); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java index b8dcbd5..3dd0bfa 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
@@ -27,11 +27,13 @@ import com.google.common.base.Strings; import com.google.gerrit.extensions.registration.DynamicItem; import com.google.gerrit.httpd.WebSession; +import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.account.AccountManager; import com.google.gerrit.server.account.AuthRequest; import com.google.gerrit.server.account.AuthResult; -import com.google.gerrit.server.project.ProjectControl; +import com.google.gerrit.server.permissions.PermissionBackend; import com.google.inject.Inject; +import com.google.inject.Provider; import com.google.inject.Singleton; import java.util.Collection; import java.util.Collections; @@ -45,7 +47,8 @@ public class GerritToGitBlitUserService implements IAuthenticationManager, IUserManager { private static final Logger log = LoggerFactory.getLogger(GerritToGitBlitUserService.class); - private final ProjectControl.Factory projectControl; + private final Provider<CurrentUser> userProvider; + private final PermissionBackend permissionBackend; private final AccountManager accountManager; private final DynamicItem<WebSession> webSession; @@ -53,10 +56,12 @@ @Inject public GerritToGitBlitUserService( - final ProjectControl.Factory projectControl, + Provider<CurrentUser> userProvider, + PermissionBackend permissionBackend, AccountManager accountManager, - final DynamicItem<WebSession> webSession) { - this.projectControl = projectControl; + DynamicItem<WebSession> webSession) { + this.userProvider = userProvider; + this.permissionBackend = permissionBackend; this.accountManager = accountManager; this.webSession = webSession; } @@ -66,7 +71,7 @@ String passwordString = new String(password); if (username.equals(GerritToGitBlitUserModel.ANONYMOUS_USER)) { - return GerritToGitBlitUserModel.getAnonymous(projectControl); + return GerritToGitBlitUserModel.getAnonymous(); } else if (passwordString.startsWith(GerritToGitBlitUserService.SESSIONAUTH)) { return authenticateSSO( username, passwordString.substring(GerritToGitBlitUserService.SESSIONAUTH.length())); @@ -93,7 +98,7 @@ return null; } - return new GerritToGitBlitUserModel(username, projectControl); + return new GerritToGitBlitUserModel(username, userProvider, permissionBackend); } public UserModel authenticateBasicAuth(String username, String password) { @@ -113,7 +118,7 @@ return null; } - return new GerritToGitBlitUserModel(username, projectControl); + return new GerritToGitBlitUserModel(username, userProvider, permissionBackend); } @Override @@ -133,7 +138,7 @@ httpRequest.getSession().setAttribute(Constants.ATTRIB_AUTHTYPE, AuthenticationType.CONTAINER); if (Strings.isNullOrEmpty(gerritUsername) || Strings.isNullOrEmpty(gerritToken)) { - return GerritToGitBlitUserModel.getAnonymous(projectControl); + return GerritToGitBlitUserModel.getAnonymous(); } return authenticateSSO(gerritUsername, gerritToken); } @@ -210,7 +215,7 @@ @Override public UserModel getUserModel(String username) { - return new GerritToGitBlitUserModel(username, projectControl); + return new GerritToGitBlitUserModel(username, userProvider, permissionBackend); } @Override