✏️

- feature access/refresh tokens auth
This commit is contained in:
2026-06-11 15:59:29 +08:00
parent ea8e41e688
commit 3f386e5e38
5 changed files with 189 additions and 52 deletions
+17 -1
View File
@@ -3,11 +3,12 @@ from typing import Annotated, Optional
from fastapi import FastAPI, Depends, Request
from sqlalchemy.orm import Session
from starlette import status
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.staticfiles import StaticFiles
import models
from auth import get_db, get_current_user, router as auth_router
from config import templates
from config import templates, ACCESS_TOKEN_EXPIRE_MINUTES
from models import Property
from properties import router as properties_router
@@ -19,6 +20,21 @@ app.mount("/static", StaticFiles(directory="static"), name="static")
models.Base.metadata.create_all(bind=__import__("database", fromlist=["engine"]).engine)
class RefreshTokenMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
response = await call_next(request)
new_token = getattr(request.state, "new_access_token", None)
if new_token:
response.set_cookie(
"access_token", new_token,
httponly=True, max_age=ACCESS_TOKEN_EXPIRE_MINUTES * 60, samesite="lax",
)
return response
app.add_middleware(RefreshTokenMiddleware)
db_dependency = Annotated[Session, Depends(get_db)]
user_dependency = Annotated[Optional[dict], Depends(get_current_user)]