From 4fd7e5acbf2d557787e07e1ba26ad9cb58d5d715 Mon Sep 17 00:00:00 2001 From: nessi Date: Thu, 9 Jul 2026 12:20:23 +0200 Subject: [PATCH] feat: add CORS origins string parsing with field validator Add field_validator to Settings.cors_origins to support comma-separated string input in addition to list format, enabling flexible configuration through environment variables --- backend/app/core/config.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 166ee94..02b77b0 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -1,6 +1,6 @@ from functools import lru_cache -from pydantic import AnyHttpUrl, Field +from pydantic import AnyHttpUrl, Field, field_validator from pydantic_settings import BaseSettings, SettingsConfigDict @@ -20,6 +20,13 @@ class Settings(BaseSettings): demo_admin_password: str = "ChangeMe_UseEnvInstead" cors_origins: list[AnyHttpUrl] | list[str] = ["http://localhost:5173", "http://localhost:8080"] + @field_validator("cors_origins", mode="before") + @classmethod + def parse_cors_origins(cls, value: str | list[str]) -> list[str]: + if isinstance(value, str): + return [origin.strip() for origin in value.split(",") if origin.strip()] + return value + @lru_cache def get_settings() -> Settings: