cors: allow-origin FRONTEND_BASE_URL

This commit is contained in:
Johannes Lötzsch 2022-03-11 16:37:24 +01:00
parent a51eddd187
commit df0df1affd
2 changed files with 13 additions and 6 deletions

View File

@ -2,7 +2,6 @@
(:require [compojure.core :refer [defroutes GET POST]]
[compojure.route :as route]
[ring.util.response :refer [response]]
[ring.middleware.cors :refer [wrap-cors]]
[beherbergung.webserver.middleware :refer [wrap-graphql wrap-graphiql wrap-nextjs-frontend wrap-frontend-config wrap-defaults]]
[beherbergung.resolver.core :refer [graphql]]
[beherbergung.config.state :refer [env]]))
@ -29,14 +28,10 @@
(route/not-found "Not Found"))
(def app
(-> app-routes
(wrap-nextjs-frontend)
(wrap-frontend-config)
(wrap-defaults)
(wrap-cors :access-control-allow-origin [#"http://localhost:3000"]
:access-control-allow-methods [:get :put :post :delete])))
(wrap-defaults)))

View File

@ -4,6 +4,7 @@
[ring.middleware.json :refer [wrap-json-response wrap-json-body]]
[ring.middleware.content-type :refer [wrap-content-type]]
[ring.middleware.not-modified :refer [wrap-not-modified]]
[ring.middleware.cors :refer [wrap-cors]]
[ring.util.json-response :refer [json-response]]
[ring.util.response :refer [resource-response content-type]]
[lib.graphql.middleware :refer [wrap-graphql-error]]
@ -89,6 +90,15 @@
:backend_base_url (:frontend-backend-base-url env)})
(handler req))))
(defn wrap-cors-from-env
"cors configuration depends on `env`"
[handler]
(fn [req]
(let [dynamic-wrapped (wrap-cors handler :access-control-allow-origin [#"http://localhost:3000"
(when (:frontend-base-url env) (re-pattern (:frontend-base-url env)))]
:access-control-allow-methods [:get :put :post :delete])
res (dynamic-wrapped req)]
res)))
(defn wrap-defaults [handler]
(-> handler
@ -98,4 +108,6 @@
(etag/wrap-file-etag)
(wrap-not-modified)
(wrap-cors-from-env)
(wrap-debug)))