提交 005effe6 编写于 作者: O Olivier Lamy

Merge pull request #470 from recampbell/master

Expose /whoAmI/api/*
Thanks
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.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
@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() {
List <String> authorities = new ArrayList<String>();
if (auth().getAuthorities() == null) {
return (String[]) authorities.toArray();
}
for (GrantedAuthority a : auth().getAuthorities()) {
authorities.add(a.getAuthority());
}
return (String[]) authorities.toArray(new String[0]);
}
@Override
public String getIconFileName() {
return null;
}
@Override
public String getDisplayName() {
return "Who Am I";
}
@Override
public String getUrlName() {
return "whoAmI";
}
}
......@@ -25,10 +25,11 @@ THE SOFTWARE.
<!-- show debug information about the current user -->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:s="/lib/form">
<l:layout>
<l:layout title="Who Am I">
<l:hasPermission permission="${app.READ}">
<st:include page="sidepanel.jelly" />
</l:hasPermission>
<st:include page="sidepanel.jelly" it="${app}" />
</l:hasPermission>
<l:main-panel>
<j:set var="auth" value="${app.authentication}" />
<h1>Who Am I?</h1>
......@@ -87,6 +88,6 @@ THE SOFTWARE.
</j:forEach>
</j:forEach>
</table>
</l:main-panel>
</l:layout>
</l:main-panel>
</l:layout>
</j:jelly>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册