package hudson.security; import hudson.Extension; import hudson.Functions; import hudson.model.Api; import hudson.model.UnprotectedRootAction; import java.util.ArrayList; import java.util.List; import jenkins.model.Jenkins; import org.acegisecurity.Authentication; import org.acegisecurity.GrantedAuthority; import org.jenkinsci.Symbol; import org.kohsuke.stapler.export.Exported; import org.kohsuke.stapler.export.ExportedBean; /** * Expose the data needed for /whoAmI, so it can be exposed by Api. * * @author Ryan Campbell * */ @Extension @Symbol("whoAmI") @ExportedBean public class WhoAmI implements UnprotectedRootAction { public Api getApi() { return new Api(this); } @Exported public String getName() { return auth().getName(); } @Exported public boolean isAuthenticated() { return auth().isAuthenticated(); } @Exported public boolean isAnonymous() { return Functions.isAnonymous(); } @Exported public String getDetails() { return auth().getDetails() != null ? auth().getDetails().toString() : null; } @Exported public String getToString() { return auth().toString(); } private Authentication auth() { return Jenkins.getAuthentication(); } @Exported public String[] getAuthorities() { if (auth().getAuthorities() == null) { return new String[0]; } List <String> authorities = new ArrayList<String>(); for (GrantedAuthority a : auth().getAuthorities()) { authorities.add(a.getAuthority()); } return (String[]) authorities.toArray(new String[authorities.size()]); } @Override public String getIconFileName() { return null; } @Override public String getDisplayName() { return "Who Am I"; } @Override public String getUrlName() { return "whoAmI"; } }