added permission check to push command builder

This commit is contained in:
Sebastian Sdorra
2013-05-17 17:00:02 +02:00
parent 95c2d66bd5
commit b3becbb5bd

View File

@@ -33,10 +33,15 @@ package sonia.scm.repository.api;
//~--- non-JDK imports -------------------------------------------------------- //~--- non-JDK imports --------------------------------------------------------
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import sonia.scm.repository.PermissionType;
import sonia.scm.repository.Repository; import sonia.scm.repository.Repository;
import sonia.scm.repository.RepositoryException; import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.PushCommand; import sonia.scm.repository.spi.PushCommand;
import sonia.scm.repository.spi.PushCommandRequest; import sonia.scm.repository.spi.PushCommandRequest;
import sonia.scm.security.RepositoryPermission;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
@@ -76,6 +81,14 @@ public final class PushCommandBuilder
public PushResponse push(Repository remoteRepository) public PushResponse push(Repository remoteRepository)
throws IOException, RepositoryException throws IOException, RepositoryException
{ {
Subject subject = SecurityUtils.getSubject();
//J-
subject.checkPermission(
new RepositoryPermission(remoteRepository, PermissionType.WRITE)
);
//J+
request.setRemoteRepository(remoteRepository); request.setRemoteRepository(remoteRepository);
return command.push(request); return command.push(request);