From 04ded6de17c7b6e552b510c60b069c97788f0b24 Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Thu, 7 May 2020 23:53:30 +0200 Subject: [PATCH] Add CORS config --- .env.dist | 3 ++- api/resources/application.yaml | 1 + api/src/NotesApplication.kt | 3 +-- api/src/features/ConfigurationFeature.kt | 2 +- api/src/features/Features.kt | 9 +++++++-- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.env.dist b/.env.dist index 82c0222..24fa0d0 100644 --- a/.env.dist +++ b/.env.dist @@ -2,4 +2,5 @@ MYSQL_ROOT_PASSWORD= MYSQL_DATABASE= MYSQL_USER= MYSQL_PASSWORD= -JWT_SECRET= \ No newline at end of file +JWT_SECRET= +CORS=false \ No newline at end of file diff --git a/api/resources/application.yaml b/api/resources/application.yaml index a3d011b..ce067b6 100644 --- a/api/resources/application.yaml +++ b/api/resources/application.yaml @@ -10,6 +10,7 @@ database: server: host: 0.0.0.0 port: 8081 + cors: ${CORS:-true} jwt: secret: ${JWT_SECRET} diff --git a/api/src/NotesApplication.kt b/api/src/NotesApplication.kt index ae7e54d..2a8c825 100644 --- a/api/src/NotesApplication.kt +++ b/api/src/NotesApplication.kt @@ -19,7 +19,6 @@ import org.kodein.di.generic.singleton import org.slf4j.Logger import org.slf4j.LoggerFactory import javax.sql.DataSource -import kotlin.system.exitProcess val kodein = Kodein { import(serviceModule) @@ -57,7 +56,7 @@ fun serve(kodein: Kodein) { fun Application.module() { - loadFeatures() + loadFeatures(kodein) log.debug(kodein.container.tree.bindings.description()) diff --git a/api/src/features/ConfigurationFeature.kt b/api/src/features/ConfigurationFeature.kt index 6dbad66..853f9da 100644 --- a/api/src/features/ConfigurationFeature.kt +++ b/api/src/features/ConfigurationFeature.kt @@ -23,7 +23,7 @@ val configurationModule = Kodein.Module(name = "Configuration") { } data class DatabaseConfig(val host: String, val port: Int, val name: String, val username: String, val password: Masked) -data class ServerConfig(val host: String, val port: Int) +data class ServerConfig(val host: String, val port: Int, val cors: Boolean) data class JwtConfig(val secret: Masked, val auth: JwtValidity, val refresh: JwtValidity) data class JwtValidity(val validity: Long, val unit: TimeUnit) data class Config(val database: DatabaseConfig, val server: ServerConfig, val jwt: JwtConfig) diff --git a/api/src/features/Features.kt b/api/src/features/Features.kt index e2a4eb3..22be429 100644 --- a/api/src/features/Features.kt +++ b/api/src/features/Features.kt @@ -2,9 +2,14 @@ package be.vandewalleh.features import be.vandewalleh.auth.authenticationModule import io.ktor.application.* +import org.kodein.di.Kodein +import org.kodein.di.generic.instance -fun Application.loadFeatures() { - corsFeature() +fun Application.loadFeatures(kodein: Kodein) { + val config by kodein.instance() + if (config.server.cors) { + corsFeature() + } contentNegotiationFeature() authenticationModule() handleErrors()