summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
Diffstat (limited to 'container-core')
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/RestApi.java3
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java7
2 files changed, 10 insertions, 0 deletions
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApi.java b/container-core/src/main/java/com/yahoo/restapi/RestApi.java
index 2ef14679553..d15a94bea30 100644
--- a/container-core/src/main/java/com/yahoo/restapi/RestApi.java
+++ b/container-core/src/main/java/com/yahoo/restapi/RestApi.java
@@ -8,6 +8,7 @@ import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.RequestHandlerSpec;
import java.io.InputStream;
+import java.security.Principal;
import java.util.List;
import java.util.Optional;
import java.util.OptionalDouble;
@@ -129,6 +130,8 @@ public interface RestApi {
ObjectMapper jacksonJsonMapper();
UriBuilder uriBuilder();
AclMapping.Action aclAction();
+ Optional<Principal> userPrincipal();
+ Principal userPrincipalOrThrow();
interface Parameters {
Optional<String> getString(String name);
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java b/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java
index 646177e60db..fda08342ead 100644
--- a/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java
+++ b/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java
@@ -14,6 +14,7 @@ import com.yahoo.restapi.RestApiMappers.ResponseMapperHolder;
import java.io.InputStream;
import java.net.URI;
+import java.security.Principal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -405,6 +406,12 @@ class RestApiImpl implements RestApi {
: new UriBuilder(uri.getScheme() + "://" + uri.getHost());
}
@Override public AclMapping.Action aclAction() { return aclAction; }
+ @Override public Optional<Principal> userPrincipal() {
+ return Optional.ofNullable(request.getJDiscRequest().getUserPrincipal());
+ }
+ @Override public Principal userPrincipalOrThrow() {
+ return userPrincipal().orElseThrow(RestApiException.Unauthorized::new);
+ }
private class PathParametersImpl implements RestApi.RequestContext.PathParameters {
@Override