James Moger
2014-05-16 1b34b05f5b8d2d0fd51819b286e22d7ddd27cb27
src/main/java/com/gitblit/servlet/GitFilter.java
@@ -17,6 +17,8 @@
import java.text.MessageFormat;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.http.HttpServletRequest;
import com.gitblit.Constants.AccessRestrictionType;
@@ -24,12 +26,13 @@
import com.gitblit.GitBlitException;
import com.gitblit.IStoredSettings;
import com.gitblit.Keys;
import com.gitblit.manager.IAuthenticationManager;
import com.gitblit.manager.IFederationManager;
import com.gitblit.manager.IRepositoryManager;
import com.gitblit.manager.IRuntimeManager;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.StringUtils;
import dagger.ObjectGraph;
/**
 * The GitFilter is an AccessRestrictionFilter which ensures that Git client
@@ -39,6 +42,7 @@
 * @author James Moger
 *
 */
@Singleton
public class GitFilter extends AccessRestrictionFilter {
   protected static final String gitReceivePack = "/git-receive-pack";
@@ -52,11 +56,18 @@
   private IFederationManager federationManager;
   @Override
   protected void inject(ObjectGraph dagger) {
      super.inject(dagger);
      this.settings = dagger.get(IStoredSettings.class);
      this.federationManager = dagger.get(IFederationManager.class);
   @Inject
   public GitFilter(
         IStoredSettings settings,
         IRuntimeManager runtimeManager,
         IAuthenticationManager authenticationManager,
         IRepositoryManager repositoryManager,
         IFederationManager federationManager) {
      super(runtimeManager, authenticationManager, repositoryManager);
      this.settings = settings;
      this.federationManager = federationManager;
   }
   /**
@@ -191,15 +202,8 @@
         return false;
      }
      if (action.equals(gitReceivePack)) {
         // Push request
         if (user.canPush(repository)) {
            return true;
         } else {
            // user is unauthorized to push to this repository
            logger.warn(MessageFormat.format("user {0} is not authorized to push to {1}",
                  user.username, repository));
            return false;
         }
         // push permissions are enforced in the receive pack
         return true;
      } else if (action.equals(gitUploadPack)) {
         // Clone request
         if (user.canClone(repository)) {