package org.jenkinsci.plugins.github.admin; import jenkins.model.Jenkins; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; import org.kohsuke.stapler.interceptor.Interceptor; import org.kohsuke.stapler.interceptor.InterceptorAnnotation; import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang.reflect.InvocationTargetException; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * InterceptorAnnotation annotation to use on WebMethod signature. * Encapsulates preprocess logic of checking for admin rights * * @author lanwen (Merkushev Kirill) * @see <a href=https://wiki.jenkins-ci.org/display/JENKINS/Web+Method>Web Method</a> */ @Retention(RUNTIME) @Target({METHOD, FIELD}) @InterceptorAnnotation(RequireAdminRights.Processor.class) public @interface RequireAdminRights { class Processor extends Interceptor { @Override public Object invoke(StaplerRequest request, StaplerResponse response, Object instance, Object[] arguments) throws IllegalAccessException, InvocationTargetException { Jenkins.getInstance().checkPermission(Jenkins.ADMINISTER); return target.invoke(request, response, instance, arguments); } } }