Skip to content

Commit

Permalink
added disable cors ability
Browse files Browse the repository at this point in the history
  • Loading branch information
ychebyshev committed Feb 29, 2024
1 parent 02f3092 commit 9d74c8f
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 9 deletions.
12 changes: 9 additions & 3 deletions shvatka/api/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import uvicorn
from fastapi import FastAPI

from shvatka.api.config.parser.main import load_config
from shvatka.api.dependencies import setup_di
from shvatka.api.main_factory import (
create_app_with_dishka,
create_app,
)
from shvatka.common.config.parser.logging_config import setup_logging
from shvatka.common.config.parser.paths import common_get_paths
Expand All @@ -15,10 +17,14 @@
def main() -> FastAPI:
paths = common_get_paths("SHVATKA_API_PATH")
setup_logging(paths)
api_config = load_config(paths)

app = create_app_with_dishka("SHVATKA_API_PATH")
app = create_app(api_config.auth.disable_cors)
root_app = FastAPI()
root_app.mount(api_config.context_path, app)
setup_di(root_app, "SHVATKA_API_PATH")
logger.info("app prepared")
return app
return root_app


def run():
Expand Down
1 change: 1 addition & 0 deletions shvatka/api/config/models/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ class AuthConfig:
secure: bool
auth_url: str
bot_token: str
disable_cors: bool = False
1 change: 1 addition & 0 deletions shvatka/api/config/parser/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@ def load_auth(dct: dict) -> AuthConfig:
samesite=dct["samesite"],
secure=bool(dct["secure"]),
httponly=bool(dct["httponly"]),
disable_cors=bool(dct["disable-cors"]),
)
22 changes: 16 additions & 6 deletions shvatka/api/main_factory.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,36 @@
import logging

from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware

from shvatka.api import routes, middlewares
from shvatka.api.dependencies import setup_di
from shvatka.common.config.models.paths import Paths
from shvatka.common.config.parser.paths import common_get_paths

logger = logging.getLogger(__name__)


def create_app() -> FastAPI:
def create_app(disable_cors: bool = False) -> FastAPI:
app = FastAPI()
app.include_router(routes.setup())
middlewares.setup(app)
if disable_cors:
patch_for_cors(app)
return app


def create_app_with_dishka(paths_env: str) -> FastAPI:
app = create_app()
setup_di(app, paths_env)
return app
def patch_for_cors(app: FastAPI):
origins = [
"http://localhost:4200",
]

app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)


def get_paths() -> Paths:
Expand Down

0 comments on commit 9d74c8f

Please sign in to comment.