diff --git a/pom.xml b/pom.xml index be5f3d93..c32b579a 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,7 @@ 999999-SNAPSHOT 2.289.1 jenkinsci/${project.artifactId}-plugin + true diff --git a/src/main/java/hudson/cli/MailCommand.java b/src/main/java/hudson/cli/MailCommand.java index 432e9f9f..fbf9e946 100644 --- a/src/main/java/hudson/cli/MailCommand.java +++ b/src/main/java/hudson/cli/MailCommand.java @@ -45,7 +45,7 @@ public String getShortDescription() { } protected int run() throws Exception { - Jenkins.get().checkPermission(Mailer.DescriptorImpl.getJenkinsManageOrAdmin()); + Jenkins.get().checkPermission(Jenkins.MANAGE); Transport.send(new MimeMessage(Mailer.descriptor().createSession(), stdin)); return 0; } diff --git a/src/main/java/hudson/tasks/Mailer.java b/src/main/java/hudson/tasks/Mailer.java index 0644dabf..8145c943 100644 --- a/src/main/java/hudson/tasks/Mailer.java +++ b/src/main/java/hudson/tasks/Mailer.java @@ -27,7 +27,6 @@ import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import hudson.Util; import hudson.BulkChange; import hudson.EnvVars; @@ -41,7 +40,6 @@ import jenkins.plugins.mailer.tasks.i18n.Messages; import hudson.security.Permission; import hudson.util.FormValidation; -import hudson.util.ReflectionUtils; import hudson.util.Secret; import hudson.util.XStream2; @@ -53,7 +51,6 @@ import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.lang.reflect.InvocationTargetException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Date; @@ -325,20 +322,9 @@ public DescriptorImpl() { } @NonNull - // TODO: Add @Override when Jenkins core baseline is 2.222+ + @Override public Permission getRequiredGlobalConfigPagePermission() { - return getJenkinsManageOrAdmin(); - } - - // TODO: remove when Jenkins core baseline is 2.222+ - public static Permission getJenkinsManageOrAdmin() { - Permission manage; - try { // Manage is available starting from Jenkins 2.222 (https://jenkins.io/changelog/#v2.222). See JEP-223 for more info - manage = (Permission) ReflectionUtils.getPublicProperty(Jenkins.get(), "MANAGE"); - } catch (IllegalArgumentException | InvocationTargetException | NoSuchMethodException | IllegalAccessException e) { - manage = Jenkins.ADMINISTER; - } - return manage; + return Jenkins.MANAGE; } public String getDisplayName() { @@ -670,7 +656,7 @@ public FormValidation doAddressCheck(@QueryParameter String value) { @RequirePOST public FormValidation doCheckSmtpHost(@QueryParameter String value) { - Jenkins.get().checkPermission(getJenkinsManageOrAdmin()); + Jenkins.get().checkPermission(Jenkins.MANAGE); try { if (Util.fixEmptyAndTrim(value)!=null) InetAddress.getByName(value); @@ -709,7 +695,7 @@ public FormValidation doSendTestMail( @QueryParameter boolean useSsl, @QueryParameter boolean useTls, @QueryParameter String smtpPort, @QueryParameter String charset, @QueryParameter String sendTestMailTo) throws IOException { try { - Jenkins.get().checkPermission(DescriptorImpl.getJenkinsManageOrAdmin()); + Jenkins.get().checkPermission(Jenkins.MANAGE); if (!authentication) { username = null; password = null; diff --git a/src/test/java/hudson/tasks/MailerTest.java b/src/test/java/hudson/tasks/MailerTest.java index 4fd2cb3c..8f555933 100644 --- a/src/test/java/hudson/tasks/MailerTest.java +++ b/src/test/java/hudson/tasks/MailerTest.java @@ -30,10 +30,8 @@ import hudson.model.*; import hudson.security.ACL; import hudson.security.ACLContext; -import hudson.security.Permission; import hudson.slaves.DumbSlave; import hudson.tasks.Mailer.DescriptorImpl; -import hudson.util.ReflectionUtils; import hudson.util.Secret; import org.hamcrest.MatcherAssert; import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; @@ -62,8 +60,6 @@ import jenkins.model.JenkinsLocationConfiguration; import java.io.IOException; -import java.io.UncheckedIOException; -import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Optional; import java.util.concurrent.atomic.AtomicLong; @@ -449,13 +445,6 @@ public void testMigrateOldData() { @Test public void managePermissionShouldAccessGlobalConfig() { - Permission jenkinsManage; - try { - jenkinsManage = getJenkinsManage(); - } catch (Exception e) { - Assume.assumeTrue("Jenkins baseline is too old for this test (requires Jenkins.MANAGE)", false); - return; - } final String USER = "user"; final String MANAGER = "manager"; rule.jenkins.setSecurityRealm(rule.createDummySecurityRealm()); @@ -465,7 +454,7 @@ public void managePermissionShouldAccessGlobalConfig() { // Read and Manage .grant(Jenkins.READ).everywhere().to(MANAGER) - .grant(jenkinsManage).everywhere().to(MANAGER) + .grant(Jenkins.MANAGE).everywhere().to(MANAGER) ); try (ACLContext c = ACL.as(User.getById(USER, true))) { @@ -513,13 +502,6 @@ public void doCheckSmtpServerShouldNotThrowForUserWithManagePermissions() { } } - // TODO: remove when Jenkins core baseline is 2.222+ - private Permission getJenkinsManage() throws NoSuchMethodException, IllegalAccessException, - InvocationTargetException { - // Jenkins.MANAGE is available starting from Jenkins 2.222 (https://jenkins.io/changelog/#v2.222). See JEP-223 for more info - return (Permission) ReflectionUtils.getPublicProperty(Jenkins.get(), "MANAGE"); - } - private final class TestProject { private final FakeChangeLogSCM scm = new FakeChangeLogSCM(); private final FreeStyleProject project;