← Back to team overview

sts-sponsors team mailing list archive

[Merge] ~thorsten-merten/maas-site-manager:MAASENG-1465-add-cors-middleware into maas-site-manager:main

 

Thorsten Merten has proposed merging ~thorsten-merten/maas-site-manager:MAASENG-1465-add-cors-middleware into maas-site-manager:main.

Commit message:
feat: add CORS middleware and allow dev env

basically makes this work:
curl -H "Access-Control-Request-Method: GET" -H "Origin:
http://localhost:8405"; --head http://localhost:8000



Requested reviews:
  MAAS Committers (maas-committers)

For more details, see:
https://code.launchpad.net/~thorsten-merten/maas-site-manager/+git/maas-site-manager/+merge/438465
-- 
Your team MAAS Committers is requested to review the proposed merge of ~thorsten-merten/maas-site-manager:MAASENG-1465-add-cors-middleware into maas-site-manager:main.
diff --git a/backend/msm/user_api/_setup.py b/backend/msm/user_api/_setup.py
index 58b272f..1c62a7a 100644
--- a/backend/msm/user_api/_setup.py
+++ b/backend/msm/user_api/_setup.py
@@ -1,6 +1,7 @@
 from os import environ
 
 from fastapi import FastAPI
+from fastapi.middleware.cors import CORSMiddleware
 
 from . import _base
 from .. import PACKAGE
@@ -16,15 +17,49 @@ DEFAULT_DB_DSN = (
     + f"{POSTGRES_USER}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}/{POSTGRES_DB}"
 )
 
+# TODO: make config dynamic and allow env vars
+origins = [
+    "http://localhost";,
+    "http://127.0.0.1";,
+    "http://localhost:8405";,
+    "http://127.0.0.1:8405";,
+]
+
+description = """
+The MAAS Site Manager API enrols and manages MAAS regiond's. 🚀
+
+## Sites
+
+Sites are created through an onboarding workflow (not yet implemented).
+In addition to onbaording sites you can
+
+* **List sites**
+* **Filter sites**
+
+## Tokens
+
+* **Create tokens**
+* **List tokens**
+"""
+
 
 def create_app(db_dsn: str = DEFAULT_DB_DSN) -> FastAPI:
     db = Database(db_dsn)
     app = FastAPI(
+        redoc_url=None,
+        title="MAAS Site Manager",
         name=PACKAGE.project_name,
         version=PACKAGE.version,
         on_startup=[db.connect],
         on_shutdown=[db.disconnect],
     )
+    app.add_middleware(
+        CORSMiddleware,
+        allow_origins=origins,
+        allow_credentials=True,
+        allow_methods=["*"],
+        allow_headers=["*"]
+    )
     app.state.db = db
     app.router.add_api_route("/", _base.root, methods=["GET"])
     app.router.add_api_route("/sites", _base.sites, methods=["GET"])

Follow ups