package com.tinkerpop.rexster.kibbles.sample;
import com.tinkerpop.rexster.extension.ExtensionDefinition;
import com.tinkerpop.rexster.extension.ExtensionDescriptor;
import com.tinkerpop.rexster.extension.ExtensionNaming;
import com.tinkerpop.rexster.extension.ExtensionPoint;
import com.tinkerpop.rexster.extension.ExtensionResponse;
import com.tinkerpop.rexster.extension.RexsterContext;
import javax.ws.rs.core.SecurityContext;
import java.security.Principal;
import java.util.HashMap;
import java.util.Map;
/**
* An extension that demostrates how to get a Principal from the SecurityContext.
*/
@ExtensionNaming(name = SecureExtension.EXTENSION_NAME, namespace = AbstractSampleExtension.EXTENSION_NAMESPACE)
public class SecureExtension extends AbstractSampleExtension {
public static final String EXTENSION_NAME = "secure";
/**
* ttp://localhost:8182/graphs/tinkergraph/vertices/1/tp-sample/secure
*/
@ExtensionDefinition(extensionPoint = ExtensionPoint.GRAPH)
@ExtensionDescriptor(description = "shows if security is on or off and who the user is if it is on.")
public ExtensionResponse doSomethingIfSecure(@RexsterContext SecurityContext securityContext) {
final Map<String, String> map = new HashMap<String, String>();
final Principal principal = securityContext.getUserPrincipal();
// if <security><authetication><type> is set to "none" in rexster.xml the principal will
// return as null
if (principal == null) {
map.put("security", "authentication off");
map.put("user", "<none>");
} else {
map.put("security", "authentication on");
map.put("user", principal.getName());
}
return ExtensionResponse.ok(map);
}
}