♑✏️
- feature access/refresh tokens auth
This commit is contained in:
@@ -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)]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user