diff --git a/core/src/main/java/hudson/model/AbstractBuild.java b/core/src/main/java/hudson/model/AbstractBuild.java index 985d34c1c28c18429b6f5933afc4eafc55cde1f2..572a3c6f42bbf11b0e0b61c42a0a268f0bed83da 100644 --- a/core/src/main/java/hudson/model/AbstractBuild.java +++ b/core/src/main/java/hudson/model/AbstractBuild.java @@ -586,11 +586,8 @@ public abstract class AbstractBuild
,R extends Abs } } - /** - * People can stop a build if they can start a build. - */ public void checkAbortPermission() { - getParent().getACL().checkPermission(AbstractProject.BUILD); + getParent().getACL().checkPermission(AbstractProject.ABORT); } // diff --git a/core/src/main/java/hudson/model/AbstractProject.java b/core/src/main/java/hudson/model/AbstractProject.java index 5197745696c826edf7b01ddaf337a5a900510924..4f3103b2cfd2dc17908adea1c66c9132ad151333 100644 --- a/core/src/main/java/hudson/model/AbstractProject.java +++ b/core/src/main/java/hudson/model/AbstractProject.java @@ -937,4 +937,8 @@ public abstract class AbstractProject
,R extends A
private static final Logger LOGGER = Logger.getLogger(AbstractProject.class.getName());
public static final Permission BUILD = new Permission(PERMISSIONS, "Build", Permission.UPDATE);
+ /**
+ * Permission to abort a build. For now, let's make it the same as {@link #BUILD}
+ */
+ public static final Permission ABORT = BUILD;
}
diff --git a/core/src/main/java/hudson/model/Executor.java b/core/src/main/java/hudson/model/Executor.java
index 88b2859b32e3770ca3c2ba7e8f5e181437555941..71c8b32f6b6dae2aee73b9285252115a9995bb05 100644
--- a/core/src/main/java/hudson/model/Executor.java
+++ b/core/src/main/java/hudson/model/Executor.java
@@ -8,6 +8,7 @@ import javax.servlet.ServletException;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
+import org.acegisecurity.AccessDeniedException;
/**
@@ -162,6 +163,18 @@ public class Executor extends Thread implements ModelObject {
rsp.forwardToPreviousPage(req);
}
+ /**
+ * Checks if the current user has a permission to stop this build.
+ */
+ public boolean hasStopPermission() {
+ try {
+ executable.checkAbortPermission();
+ return true;
+ } catch (AccessDeniedException e) {
+ return false;
+ }
+ }
+
public Computer getOwner() {
return owner;
}
diff --git a/core/src/main/resources/lib/hudson/executors.jelly b/core/src/main/resources/lib/hudson/executors.jelly
index 5c549851e9c0bc90301650953d825a4164830551..b5677c1bb53d5aaa74b9e8e08c93c0fdd45c5310 100644
--- a/core/src/main/resources/lib/hudson/executors.jelly
+++ b/core/src/main/resources/lib/hudson/executors.jelly
@@ -58,9 +58,9 @@