From 7ec0fc979fbb5ad1d14901ca3be6c021c70f2bd5 Mon Sep 17 00:00:00 2001 From: hanfi <ccc@spahan.ch> Date: Wed, 26 Jul 2023 19:45:16 +0200 Subject: [PATCH] specific imports and more comments --- backend/main.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/backend/main.py b/backend/main.py index fc61189..dd487b7 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,4 +1,4 @@ -import datetime +from datetime import datetime, timedelta from uuid import UUID from fastapi import Depends, FastAPI, HTTPException, Request, status @@ -18,6 +18,7 @@ create_database() app = FastAPI() +# CORS handling origins = [settings.customer_url, settings.worker_url] app.add_middleware( CORSMiddleware, @@ -26,14 +27,18 @@ app.add_middleware( allow_methods=["*"], allow_headers=["*"], ) + +# Rate Limiting for some endpoints limiter = Limiter(key_func=get_remote_address) app.state.limiter = limiter app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) + +# Authentication setup oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") oauth2_tokener = Serializer(settings.signing_key) -# Dependency +# DB Dependency def get_db(): db = SessionLocal() try: @@ -42,6 +47,7 @@ def get_db(): db.close() +# Routes @app.post("/item/prepare", response_model=schemas.Item) @limiter.limit("2/minute") def add_item( @@ -72,10 +78,7 @@ def get_item(item_uuid: str, db: Session = Depends(get_db)): @app.get("/items", response_model=list[schemas.Item]) def get_items(token: str = Depends(oauth2_scheme), db: Session = Depends(get_db)): - if ( - datetime.datetime.fromtimestamp(oauth2_tokener.loads(token)) - < datetime.datetime.now() - ): + if datetime.fromtimestamp(oauth2_tokener.loads(token)) < datetime.now(): raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid authentication credentials", @@ -114,10 +117,7 @@ def verify_supporter(form_data: OAuth2PasswordRequestForm = Depends()): raise HTTPException(status_code=400, detail="Incorrect username or password") return { "access_token": oauth2_tokener.dumps( - ( - datetime.datetime.now() - + datetime.timedelta(minutes=settings.token_lifetime) - ).timestamp() + (datetime.now() + timedelta(minutes=settings.token_lifetime)).timestamp() ), "token_type": "bearer", } -- GitLab