fix auth, so swagger shows an authorize button, add /api/v1 base url path and massively improve logging

This commit is contained in:
maxid
2025-02-22 19:45:59 +01:00
parent 8b6d31c6a0
commit 49c1b319e1
5 changed files with 13 additions and 12 deletions

View File

@@ -28,12 +28,12 @@ ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
log = logging.getLogger(__name__)
log.level = logging.DEBUG
log.addHandler(logging.StreamHandler())
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="api/v1/token")
router = APIRouter()
async def get_current_user(token: str) -> UserInternal:
async def get_current_user(token: str = Depends(oauth2_scheme)) -> UserInternal:
credentials_exception = HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Could not validate credentials",
@@ -63,7 +63,7 @@ def create_access_token(data: dict, expires_delta: timedelta | None = None):
if expires_delta:
expire = datetime.now(timezone.utc) + expires_delta
else:
expire = datetime.now(timezone.utc) + timedelta(minutes=15)
expire = datetime.now(timezone.utc) + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt

View File

@@ -9,7 +9,6 @@ import database
from auth import ACCESS_TOKEN_EXPIRE_MINUTES, create_access_token, Token, router
from database import UserInternal
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@@ -46,7 +45,6 @@ def authenticate_user(email: str, password: str) -> bool | UserInternal:
async def login_for_access_token(
form_data: Annotated[OAuth2PasswordRequestForm, Depends()],
) -> Token:
print("post:", form_data.username, form_data.password)
user = authenticate_user(form_data.username, form_data.password)
if not user:
raise HTTPException(

View File

@@ -10,8 +10,6 @@ from psycopg.rows import dict_row
from pydantic import BaseModel
log = getLogger(__name__)
log.level = logging.DEBUG
log.addHandler(logging.StreamHandler())
class User(BaseModel):

View File

@@ -1,3 +1,6 @@
import logging
import pprint
import sys
import uvicorn
from fastapi import FastAPI
@@ -5,11 +8,14 @@ from fastapi import FastAPI
from routers import users
from auth import password
app = FastAPI()
logging.basicConfig(level=logging.DEBUG,format="%(asctime)s - %(levelname)s - module: %(name)s - %(funcName)s(): %(message)s", stream=sys.stdout)
app = FastAPI(root_path="/api/v1")
app.include_router(users.router, tags=["users"])
app.include_router(password.router, tags=["authentication"])
if __name__ == "__main__":
uvicorn.run(app, host="127.0.0.1", port=5049)
uvicorn.run(app, host="127.0.0.1", port=5049)

View File

@@ -1,4 +1,3 @@
import logging
log = logging.getLogger(__name__)
log.level = logging.DEBUG
log = logging.getLogger(__name__)