From 50647ffc0698de2be3feb1f6f8883e923b3f3fd6 Mon Sep 17 00:00:00 2001 From: Bruno Pacheco Date: Mon, 16 Sep 2024 23:04:08 +0200 Subject: [PATCH] fix: get userIdClaim variable at runtime There is some incompatibility with native executable, please vide the exception below. ``` - the runtime value of 'quarkus.rest-client.rems_yaml.user-id-claim' is [sub] but the value [null] was injected into io.github.genomicdatainfrastructure.daam.security.PostAuthenticationFilter() ``` --- .../daam/security/PostAuthenticationFilter.java | 12 +++++------- .../daam/security/PostAuthenticationFilterTest.java | 4 +--- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/github/genomicdatainfrastructure/daam/security/PostAuthenticationFilter.java b/src/main/java/io/github/genomicdatainfrastructure/daam/security/PostAuthenticationFilter.java index d0337c5..79a97b3 100644 --- a/src/main/java/io/github/genomicdatainfrastructure/daam/security/PostAuthenticationFilter.java +++ b/src/main/java/io/github/genomicdatainfrastructure/daam/security/PostAuthenticationFilter.java @@ -12,9 +12,7 @@ import jakarta.ws.rs.container.ContainerRequestContext; import jakarta.ws.rs.container.ContainerRequestFilter; import jakarta.ws.rs.ext.Provider; -import org.eclipse.microprofile.config.inject.ConfigProperty; - -import java.util.Optional; +import org.eclipse.microprofile.config.ConfigProvider; import static io.github.genomicdatainfrastructure.daam.api.ApplicationQueryApiImpl.DEFAULT_USER_ID_CLAIM; @@ -27,22 +25,22 @@ public class PostAuthenticationFilter implements ContainerRequestFilter { private final SecurityIdentity identity; private final CreateRemsUserService createRemsUserService; - private final Optional userIdClaim; @Inject public PostAuthenticationFilter( SecurityIdentity identity, - CreateRemsUserService createRemsUserService, - @ConfigProperty(name = "quarkus.rest-client.rems_yaml.user-id-claim") Optional userIdClaim + CreateRemsUserService createRemsUserService ) { this.identity = identity; this.createRemsUserService = createRemsUserService; - this.userIdClaim = userIdClaim; } @Override public void filter(ContainerRequestContext requestContext) { if (!identity.isAnonymous()) { + var userIdClaim = ConfigProvider.getConfig().getOptionalValue( + "quarkus.rest-client.rems_yaml.user-id-claim", String.class); + var oidcPrincipal = (OidcJwtCallerPrincipal) identity.getPrincipal(); createRemsUserService.createRemsUser( diff --git a/src/test/java/io/github/genomicdatainfrastructure/daam/security/PostAuthenticationFilterTest.java b/src/test/java/io/github/genomicdatainfrastructure/daam/security/PostAuthenticationFilterTest.java index 170e383..19f120b 100644 --- a/src/test/java/io/github/genomicdatainfrastructure/daam/security/PostAuthenticationFilterTest.java +++ b/src/test/java/io/github/genomicdatainfrastructure/daam/security/PostAuthenticationFilterTest.java @@ -12,7 +12,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import static java.util.Optional.of; import static org.mockito.Mockito.*; @QuarkusTest @@ -29,8 +28,7 @@ class PostAuthenticationFilterTest { @BeforeEach void setUp() { - underTest = new PostAuthenticationFilter(securityIdentity, createRemsUserService, of( - "sub")); + underTest = new PostAuthenticationFilter(securityIdentity, createRemsUserService); } @Test