
    hg                         d Z ddlmZmZmZmZ ddlmZ ddlZddl	m
Z
  ej                  e      Z ed      dfdeded	efd
Zy)uA   
Middleware de autenticación para FastAPI (servidor asíncrono)
    )DependsHTTPExceptionHeaderRequest)OptionalN   )validate_jwt_tokenauthorizationrequestreturnc                   K   | s%t         j                  d       t        ddddi      | j                  d      s%t         j                  d       t        dd	ddi      | j	                  dd
      j                         }|s%t         j                  d       t        ddddi      d}|r8|j                  j                  d      xs |j                  j                  d      }t        ||      }|j                  d      sb|j                  dd      }t         j                  d|        d}d|j                         v rd}nd|j                         v rd}t        ||      |j                  d      S w)u9  
    Dependencia de FastAPI para validar tokens JWT
    
    Args:
        authorization: Header "Authorization: Bearer {token}"
        request: Request de FastAPI (para obtener referrer)
    
    Returns:
        dict: Datos del token validado
        
    Raises:
        HTTPException: 
            - 401: Si no hay token
            - 403: Si el token es inválido
    
    Usage:
        @app.post("/endpoint")
        async def mi_endpoint(token_data: dict = Depends(verify_embed_token)):
            client_id = token_data.get("clientId")
            # ...
    u/   🚫 Intento de acceso sin header Authorizationi  u!   Token de autenticación requeridozWWW-AuthenticateBearer)status_codedetailheaderszBearer u%   🚫 Header Authorization mal formadou/   Formato de token inválido. Use: Bearer {token} u,   🚫 Token vacío después de extraer Beareru   Token vacíoNrefererreferrersuccessmessageu   Token inválidou   ⚠️ Token rechazado: i  expiradozno permitido)r   r   data)
loggerwarningr   
startswithreplacestripr   getr	   lower)r
   r   tokenr   resulterror_messager   s          M/var/www/dev.catia.catastroantioquia-mas.com/tasa/security/auth_middleware.pyverify_embed_tokenr$      s{    6 HI6'2
 	
 ##I.>?D'2
 	
 !!)R0668EEF!'2
 	
 H??&&y1TW__5H5H5T  x0F::i 

9.?@1-AB ,,..K}2244K# 
 	
 ::fs   E1E3)__doc__fastapir   r   r   r   typingr   loggingjwt_validatorr	   	getLogger__name__r   strdictr$        r#   <module>r0      s\    < ;   -			8	$  OOO 
Or/   