diff options
Diffstat (limited to 'container-core')
-rw-r--r-- | container-core/src/main/java/com/yahoo/restapi/RestApi.java | 3 | ||||
-rw-r--r-- | container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java | 7 |
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 |