From 3d03cd00c56f48a1115adce5b266fe9c3f157109 Mon Sep 17 00:00:00 2001 From: Jens Kristian Villadsen Date: Wed, 28 Sep 2022 22:51:57 +0200 Subject: [PATCH] fix: configuration of cors Refs: #430 --- .../jpa/starter/annotations/OnCorsPresent.java | 18 ++++++++++++++++++ .../jpa/starter/common/StarterJpaConfig.java | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ca/uhn/fhir/jpa/starter/annotations/OnCorsPresent.java diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/annotations/OnCorsPresent.java b/src/main/java/ca/uhn/fhir/jpa/starter/annotations/OnCorsPresent.java new file mode 100644 index 0000000..e4a44d7 --- /dev/null +++ b/src/main/java/ca/uhn/fhir/jpa/starter/annotations/OnCorsPresent.java @@ -0,0 +1,18 @@ +package ca.uhn.fhir.jpa.starter.annotations; + +import ca.uhn.fhir.jpa.starter.AppProperties; +import org.springframework.boot.context.properties.bind.Binder; +import org.springframework.context.annotation.Condition; +import org.springframework.context.annotation.ConditionContext; +import org.springframework.core.type.AnnotatedTypeMetadata; + +public class OnCorsPresent implements Condition { + @Override + public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata metadata) { + + AppProperties config = Binder.get(conditionContext.getEnvironment()).bind("hapi.fhir", AppProperties.class).orElse(null); + if (config == null) return false; + if (config.getCors() == null) return false; + return true; + } +} \ No newline at end of file diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java b/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java index 5f311dd..5ff3e69 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java @@ -38,6 +38,7 @@ import ca.uhn.fhir.jpa.search.DatabaseBackedPagingProvider; import ca.uhn.fhir.jpa.search.IStaleSearchDeletingSvc; import ca.uhn.fhir.jpa.search.StaleSearchDeletingSvcImpl; import ca.uhn.fhir.jpa.starter.AppProperties; +import ca.uhn.fhir.jpa.starter.annotations.OnCorsPresent; import ca.uhn.fhir.jpa.starter.annotations.OnImplementationGuidesPresent; import ca.uhn.fhir.jpa.starter.common.validation.IRepositoryValidationInterceptorFactory; import ca.uhn.fhir.jpa.starter.util.EnvironmentHelper; @@ -214,7 +215,7 @@ public class StarterJpaConfig { @Bean - @ConditionalOnProperty(prefix = "hapi.fhir", name = "cors") + @Conditional(OnCorsPresent.class) public CorsInterceptor corsInterceptor(AppProperties appProperties) { // Define your CORS configuration. This is an example // showing a typical setup. You should customize this