o
    g	                     @   sj   d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ e Zh dZG dd de
Zd	S )
    )FastAPIHTTPExceptionRequeststatus)JSONResponse)
HTTPBearer)BaseHTTPMiddleware)get_current_user>   /docs/redoc/auth/login/openapi.json/auth/callback/utilities/sign_blobc                   @   s   e Zd ZdefddZdS )AuthMiddlewarerequestc              
      s\  z`|j jtv rt|jdd  ||I d H W S t|jddd d}|r)|ds/tddd	|	d
d }t
|I d H }t|jd| |jrOt|jd|j |sXttjdd	||I d H }|W S  ty} } zt|jd|jidW  Y d }~S d }~w ty } z%td dd l}	|	 }
t|
 td| tddt|idW  Y d }~S d }~ww )Ncurrent_usergetc                 S   s   d S )N )xr   r   5/var/www/html/XCapMarket/dependencies/require_auth.py<lambda>   s    z)AuthMiddleware.dispatch.<locals>.<lambda>AuthorizationzBearer i  zInvalid authorization header)status_codedetail    user_idzUser not foundr   )r   contentzError in the AuthMiddlewarer   zError in AuthMiddlewarei  )urlpathPUBLIC_PATHSsetattrstategetattrheaders
startswithr   splitr	   r   r   HTTP_401_UNAUTHORIZEDr   r   r   	Exceptionprint	traceback
format_excstr)selfr   	call_nextauth_headertokenr   responsehttp_exceptioner+   tracer   r   r   dispatch   sL   
 zAuthMiddleware.dispatchN)__name__
__module____qualname__r   r6   r   r   r   r   r      s    r   N)fastapir   r   r   r   fastapi.responsesr   fastapi.securityr   starlette.middleware.baser   dependencies.get_current_userr	   securityr!   r   r   r   r   r   <module>   s    
