From c7a2a25fe4479b1f410e258a5a98a0be88a7cc3f Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 30 Sep 2014 10:05:27 -0400 Subject: [PATCH] Fix cropped ticket status indicator --- src/main/java/com/gitblit/git/GitblitUploadPackFactory.java | 64 ++++--------------------------- 1 files changed, 9 insertions(+), 55 deletions(-) diff --git a/src/main/java/com/gitblit/git/GitblitUploadPackFactory.java b/src/main/java/com/gitblit/git/GitblitUploadPackFactory.java index 01dfc08..ec85628 100644 --- a/src/main/java/com/gitblit/git/GitblitUploadPackFactory.java +++ b/src/main/java/com/gitblit/git/GitblitUploadPackFactory.java @@ -15,23 +15,14 @@ */ package com.gitblit.git; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; - -import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.transport.RefFilter; import org.eclipse.jgit.transport.UploadPack; import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; import org.eclipse.jgit.transport.resolver.UploadPackFactory; -import com.gitblit.Constants; -import com.gitblit.GitBlit; -import com.gitblit.models.UserModel; +import com.gitblit.manager.IAuthenticationManager; +import com.gitblit.transport.git.GitDaemonClient; /** * The upload pack factory creates an upload pack which controls what refs are @@ -43,65 +34,28 @@ */ public class GitblitUploadPackFactory<X> implements UploadPackFactory<X> { + private final IAuthenticationManager authenticationManager; + + public GitblitUploadPackFactory(IAuthenticationManager authenticationManager) { + this.authenticationManager = authenticationManager; + } + @Override public UploadPack create(X req, Repository db) throws ServiceNotEnabledException, ServiceNotAuthorizedException { - UserModel user = UserModel.ANONYMOUS; int timeout = 0; - if (req instanceof HttpServletRequest) { - // http/https request may or may not be authenticated - user = GitBlit.self().authenticate((HttpServletRequest) req); - if (user == null) { - user = UserModel.ANONYMOUS; - } - } else if (req instanceof GitDaemonClient) { + if (req instanceof GitDaemonClient) { // git daemon request is always anonymous GitDaemonClient client = (GitDaemonClient) req; // set timeout from Git daemon timeout = client.getDaemon().getTimeout(); } - RefFilter refFilter = new UserRefFilter(user); UploadPack up = new UploadPack(db); - up.setRefFilter(refFilter); up.setTimeout(timeout); return up; - } - - /** - * Restricts advertisement of certain refs based on the permission of the - * requesting user. - */ - public static class UserRefFilter implements RefFilter { - - final UserModel user; - - public UserRefFilter(UserModel user) { - this.user = user; - } - - @Override - public Map<String, Ref> filter(Map<String, Ref> refs) { - if (user.canAdmin()) { - // admins can see all refs - return refs; - } - - // normal users can not clone any gitblit refs - // JGit's RefMap is custom and does not support iterator removal :( - List<String> toRemove = new ArrayList<String>(); - for (String ref : refs.keySet()) { - if (ref.startsWith(Constants.R_GITBLIT)) { - toRemove.add(ref); - } - } - for (String ref : toRemove) { - refs.remove(ref); - } - return refs; - } } } \ No newline at end of file -- Gitblit v1.9.1