summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-07-15 16:45:30 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-07-15 17:01:20 +0200
commit1063287741c52f132a43d6993c7caea98a3caf2c (patch)
treed6e7a814e624fa9b9dc14d92b53cd50aee3f240f
parent1d3812660714e910cd5efeed52661bb013d255f8 (diff)
Add user principal to RequestContext
-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