Files
marquiz-metrics/app/main.py
13orlov 83fd55c4bb
All checks were successful
continuous-integration/drone/push Build is passing
feat(api): Add CORS middleware configuration
2025-08-24 13:37:33 +01:00

62 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from fastapi import FastAPI
from loguru import logger
from contextlib import asynccontextmanager
# --- НОВЫЙ ИМПОРТ ---
from fastapi.middleware.cors import CORSMiddleware
from app.core.logging import setup_logging
from app.core.config import settings
from app.api.v1.endpoints import auth
from app.api.v1.endpoints import counters
# Вызываем настройку логирования в самом начале
setup_logging()
@asynccontextmanager
async def lifespan(app: FastAPI):
# ... (этот блок без изменений)
logger.info("Application startup...")
logger.info(f"Log level is set to: {settings.LOG_LEVEL}")
logger.info("Service is ready to accept requests.")
yield
logger.info("Application shutdown...")
app = FastAPI(
title="Marquiz Metrica Connector",
version="1.0.0",
description="Микросервис для автоматизации настройки Яндекс.Метрики для квизов.",
lifespan=lifespan
)
# --- НОВЫЙ БЛОК: НАСТРОЙКА CORS ---
# Список доменов, с которых разрешены запросы
origins = [
"https://test.mgforest.ru", # Наш тестовый frontend
"http://localhost", # Для локальной разработки
"http://localhost:8080", # Для локальной разработки
# !!! В будущем сюда нужно будет добавить домен самого Marquiz !!!
# "https://marquiz.ru",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins, # Разрешить запросы с этих доменов
allow_credentials=True, # Разрешить передачу cookie (на всякий случай)
allow_methods=["*"], # Разрешить ВСЕ методы (GET, POST, OPTIONS и т.д.)
allow_headers=["*"], # Разрешить ВСЕ заголовки
)
# ------------------------------------
# Подключаем роутеры (без изменений)
app.include_router(auth.router, prefix="/api/v1/auth", tags=["Authentication"])
app.include_router(counters.router, prefix="/api/v1/counters", tags=["Counters"])
@app.get("/", tags=["Health Check"])
def health_check():
# ... (этот блок без изменений)
logger.info("Health check endpoint was requested.")
return {"status": "ok", "message": "Welcome to Marquiz Metrica Connector!"}
logger.info("FastAPI app instance created and configured.")