From e2608173caac49e9793a68cb975fc749eaedd5e8 Mon Sep 17 00:00:00 2001 From: kohsuke Date: Sat, 12 Jan 2008 01:34:04 +0000 Subject: [PATCH] control the presence of the abort icon based on permission. git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@6579 71c3de6d-444a-0410-be80-ed276b4c234a --- core/src/main/java/hudson/model/AbstractBuild.java | 5 +---- .../src/main/java/hudson/model/AbstractProject.java | 4 ++++ core/src/main/java/hudson/model/Executor.java | 13 +++++++++++++ core/src/main/resources/lib/hudson/executors.jelly | 4 ++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/hudson/model/AbstractBuild.java b/core/src/main/java/hudson/model/AbstractBuild.java index 985d34c1c2..572a3c6f42 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 5197745696..4f3103b2cf 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 88b2859b32..71c8b32f6b 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 5c549851e9..b5677c1bb5 100644 --- a/core/src/main/resources/lib/hudson/executors.jelly +++ b/core/src/main/resources/lib/hudson/executors.jelly @@ -58,9 +58,9 @@ - + ${%terminate this build} - +