Numidium / app /api /routes /session.py
Madras1's picture
Upload 63 files
270c1c7 verified
"""
Session management routes
"""
from fastapi import APIRouter, Header, Cookie, Response, Request
from typing import Optional
import uuid
from app.core.database import create_new_session_id
from app.config import settings
router = APIRouter(prefix="/session", tags=["Session"])
@router.post("/create")
def create_session(response: Response, request: Request):
"""Create a new session and return session_id"""
session_id = create_new_session_id()
secure = settings.cookie_secure
samesite = settings.cookie_samesite
proto = request.headers.get("x-forwarded-proto", request.url.scheme)
if proto != "https" and secure:
secure = False
samesite = "lax"
response.set_cookie(
key="numidium_session",
value=session_id,
max_age=60*60*24*365, # 1 year
httponly=True,
samesite=samesite,
secure=secure
)
return {"session_id": session_id}
@router.get("/current")
def get_current_session(
numidium_session: Optional[str] = Cookie(None),
x_session_id: Optional[str] = Header(None)
):
"""Get current session ID"""
session_id = x_session_id or numidium_session
if not session_id:
return {"session_id": None, "message": "No session. Call POST /session/create"}
return {"session_id": session_id}