From b3becbb5bdae9b17f9d917c859c61114a77c4717 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 17 May 2013 17:00:02 +0200 Subject: [PATCH] added permission check to push command builder --- .../scm/repository/api/PushCommandBuilder.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/scm-core/src/main/java/sonia/scm/repository/api/PushCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/PushCommandBuilder.java index 6a5d28405c..7f1096139a 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/PushCommandBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/PushCommandBuilder.java @@ -33,10 +33,15 @@ package sonia.scm.repository.api; //~--- 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.RepositoryException; import sonia.scm.repository.spi.PushCommand; import sonia.scm.repository.spi.PushCommandRequest; +import sonia.scm.security.RepositoryPermission; //~--- JDK imports ------------------------------------------------------------ @@ -76,6 +81,14 @@ public final class PushCommandBuilder public PushResponse push(Repository remoteRepository) throws IOException, RepositoryException { + Subject subject = SecurityUtils.getSubject(); + + //J- + subject.checkPermission( + new RepositoryPermission(remoteRepository, PermissionType.WRITE) + ); + //J+ + request.setRemoteRepository(remoteRepository); return command.push(request);