refactorisation pour correction de sécurité
Tests / Backend Tests (Python) (3.10) (push) Has been cancelled
Tests / Backend Tests (Python) (3.11) (push) Has been cancelled
Tests / Backend Tests (Python) (3.12) (push) Has been cancelled
Tests / Frontend Tests (JS) (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / All Tests Passed (push) Has been cancelled
Tests / Backend Tests (Python) (3.10) (push) Has been cancelled
Tests / Backend Tests (Python) (3.11) (push) Has been cancelled
Tests / Backend Tests (Python) (3.12) (push) Has been cancelled
Tests / Frontend Tests (JS) (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / All Tests Passed (push) Has been cancelled
This commit is contained in:
+9
-3
@@ -60,14 +60,14 @@ class Settings(BaseSettings):
|
||||
ssh_remote_user: str = Field(default_factory=lambda: os.environ.get("SSH_REMOTE_USER", "root"))
|
||||
|
||||
# === API ===
|
||||
api_key: str = Field(default_factory=lambda: os.environ.get("API_KEY", "dev-key-12345"))
|
||||
api_key: str = Field(default_factory=lambda: os.environ.get("API_KEY", ""))
|
||||
api_title: str = "Homelab Automation Dashboard API"
|
||||
api_version: str = "1.0.0"
|
||||
api_description: str = "API REST moderne pour la gestion automatique d'homelab"
|
||||
|
||||
# === JWT Authentication ===
|
||||
jwt_secret_key: str = Field(
|
||||
default_factory=lambda: os.environ.get("JWT_SECRET_KEY", "dev-secret-key-change-in-production")
|
||||
default_factory=lambda: os.environ.get("JWT_SECRET_KEY", "")
|
||||
)
|
||||
jwt_expire_minutes: int = Field(
|
||||
default_factory=lambda: int(os.environ.get("JWT_EXPIRE_MINUTES", "1440"))
|
||||
@@ -85,7 +85,13 @@ class Settings(BaseSettings):
|
||||
return f"sqlite+aiosqlite:///{self.db_path}"
|
||||
|
||||
# === CORS ===
|
||||
cors_origins: list = Field(default=["*"])
|
||||
cors_origins: list = Field(
|
||||
default_factory=lambda: [
|
||||
o.strip() for o in os.environ.get(
|
||||
"CORS_ORIGINS", "http://localhost:3000,http://localhost:8008"
|
||||
).split(",") if o.strip()
|
||||
]
|
||||
)
|
||||
cors_allow_credentials: bool = True
|
||||
cors_allow_methods: list = Field(default=["*"])
|
||||
cors_allow_headers: list = Field(default=["*"])
|
||||
|
||||
@@ -157,9 +157,8 @@ async def require_admin(
|
||||
if user.get("type") == "api_key":
|
||||
return user
|
||||
|
||||
# Vérifier le rôle dans le payload JWT
|
||||
payload = user.get("payload", {})
|
||||
role = payload.get("role", "viewer")
|
||||
# Vérifier le rôle directement dans le dict utilisateur (pas dans "payload")
|
||||
role = user.get("role", "viewer")
|
||||
|
||||
if role != "admin":
|
||||
raise HTTPException(
|
||||
|
||||
Reference in New Issue
Block a user