UDHOV's picture
Sync from GitHub via hub-sync
76a7925 verified
Raw
History Blame Contribute Delete
675 Bytes
"""
Custom rate limiter key function that uses tenant_id from session
cookie when available, falls back to IP.
"""
from __future__ import annotations
from fastapi import Request
from slowapi.util import get_remote_address
def get_rate_limit_key(request: Request) -> str:
"""
Use tenant_id from session cookie as rate limit key when available,
fallback to IP address.
Args:
request: The incoming request.
Returns:
The rate limit key (tenant_id or IP address).
"""
session_token = request.cookies.get("session")
if session_token:
return f"tenant:{session_token[:16]}"
return f"ip:{get_remote_address(request)}"