diff --git a/core/src/main/java/hudson/PluginManager.java b/core/src/main/java/hudson/PluginManager.java index 8ffbdd9d06..17c42968b9 100644 --- a/core/src/main/java/hudson/PluginManager.java +++ b/core/src/main/java/hudson/PluginManager.java @@ -34,6 +34,8 @@ import hudson.model.Descriptor; import hudson.model.Failure; import hudson.model.UpdateCenter; import hudson.model.UpdateSite; +import hudson.security.Permission; +import hudson.security.PermissionScope; import hudson.util.CyclicGraphDetector; import hudson.util.CyclicGraphDetector.CycleDetectedException; import hudson.util.IOException2; @@ -689,7 +691,7 @@ public abstract class PluginManager extends AbstractModelObject { */ public HttpResponse doUploadPlugin(StaplerRequest req) throws IOException, ServletException { try { - Jenkins.getInstance().checkPermission(Jenkins.ADMINISTER); + Jenkins.getInstance().checkPermission(UPLOAD_PLUGINS); ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory()); @@ -830,7 +832,9 @@ public abstract class PluginManager extends AbstractModelObject { private static final Logger LOGGER = Logger.getLogger(PluginManager.class.getName()); public static boolean FAST_LOOKUP = !Boolean.getBoolean(PluginManager.class.getName()+".noFastLookup"); - + + public static final Permission UPLOAD_PLUGINS = new Permission(Jenkins.PERMISSIONS, "UploadPlugins", Messages._PluginManager_UploadPluginsPermission_Description(),Jenkins.ADMINISTER,PermissionScope.JENKINS); + /** * Remembers why a plugin failed to deploy. */ diff --git a/core/src/main/resources/hudson/Messages.properties b/core/src/main/resources/hudson/Messages.properties index 0bb1216d96..d6e8c52de4 100644 --- a/core/src/main/resources/hudson/Messages.properties +++ b/core/src/main/resources/hudson/Messages.properties @@ -54,5 +54,8 @@ FilePath.TildaDoesntWork=''~'' is only supported in a Unix shell and nowhere els PluginManager.DisplayName=Plugin Manager PluginManager.PortNotANumber=Port is not a number PluginManager.PortNotInRange=Port does''t range from {0} to {1} +PluginManager.UploadPluginsPermission.Description=\ + The "upload plugin" permission allows a user to upload arbitrary plugins. + AboutJenkins.DisplayName=About Jenkins AboutJenkins.Description=See the version and license information diff --git a/core/src/main/resources/hudson/PluginManager/advanced.jelly b/core/src/main/resources/hudson/PluginManager/advanced.jelly index da82f1f666..c7431659f0 100644 --- a/core/src/main/resources/hudson/PluginManager/advanced.jelly +++ b/core/src/main/resources/hudson/PluginManager/advanced.jelly @@ -46,6 +46,7 @@ THE SOFTWARE. +

${%Upload Plugin}

@@ -61,7 +62,7 @@ THE SOFTWARE. - +

${%Update Site}