James Moger
2014-03-14 8384e02b7d6f1a1ecd6782c6b5f682c109cd6e04
src/main/java/com/gitblit/git/GitblitUploadPackFactory.java
@@ -23,8 +23,10 @@
import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
import org.eclipse.jgit.transport.resolver.UploadPackFactory;
import com.gitblit.manager.ISessionManager;
import com.gitblit.manager.IAuthenticationManager;
import com.gitblit.models.UserModel;
import com.gitblit.transport.git.GitDaemonClient;
import com.gitblit.transport.ssh.SshSession;
/**
 * The upload pack factory creates an upload pack which controls what refs are
@@ -36,10 +38,10 @@
 */
public class GitblitUploadPackFactory<X> implements UploadPackFactory<X> {
   private final ISessionManager sessionManager;
   private final IAuthenticationManager authenticationManager;
   public GitblitUploadPackFactory(ISessionManager sessionManager) {
      this.sessionManager = sessionManager;
   public GitblitUploadPackFactory(IAuthenticationManager authenticationManager) {
      this.authenticationManager = authenticationManager;
   }
   @Override
@@ -51,7 +53,8 @@
      if (req instanceof HttpServletRequest) {
         // http/https request may or may not be authenticated
         user = sessionManager.authenticate((HttpServletRequest) req);
         HttpServletRequest client = (HttpServletRequest) req;
         user = authenticationManager.authenticate(client);
         if (user == null) {
            user = UserModel.ANONYMOUS;
         }
@@ -60,6 +63,13 @@
         GitDaemonClient client = (GitDaemonClient) req;
         // set timeout from Git daemon
         timeout = client.getDaemon().getTimeout();
      } else if (req instanceof SshSession) {
         // SSH request is always authenticated
         SshSession client = (SshSession) req;
         user = authenticationManager.authenticate(client);
         if (user == null) {
            throw new ServiceNotAuthorizedException();
         }
      }
      UploadPack up = new UploadPack(db);