File size: 809 Bytes
29cbab9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from fastapi import Request, Response
from fastapi_cache import FastAPICache

def user_key_builder(

    func,

    namespace: str = "",

    request: Request = None,

    response: Response = None,

    *args,

    **kwargs,

):
    """

    Custom key builder that includes the current user's ID in the cache key.

    This prevents caching data leaks across different teams/users.

    """
    # Pega o usuário logado que foi injetado pela rota (no caso, via current_user)
    user = kwargs.get("current_user")
    user_id = user.id if user else "anonymous"
    
    # Cria uma chave única baseada no prefixo, namespace, nome da função, ID do usuário e parâmetros da URL
    return f"{FastAPICache.get_prefix()}:{namespace}:{func.__module__}:{func.__name__}:{user_id}:{request.url.query}"