
    <j	                         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlZd d	lmZmZ d
gZdedefdZ G d de      Zy)    )Request)JSONResponse)BaseHTTPMiddleware)Match)ResponseWrapper)HTTPException)settingsN)ExpiredSignatureErrorInvalidTokenErrorz/health-checktokenreturnc                    K   	 t        j                  | t        j                  t        j                  g      }|S # t
        $ r t        dd      t        $ r t        dd      w xY ww)N)
algorithms  zToken has expiredstatus_codedetailzInvalid token)jwtdecoder	   JWT_SECRET_KEYJWT_ALGORITHMr
   r   r   )r   payloads     :/var/www/html/ls-doc-apis/app/middleware/authentication.pyverify_jwt_tokenr      sf     
E**UH$;$;I_I_H`a  I4GHH EODDEs   A*6; A*,A''A*c                       e Zd ZdefdZy)AuthenticationMiddlewarerequestc           	      H  K   	 d}|j                   j                  j                  D ]7  }|j                  |j                        \  }}|t
        j                  k7  s5d} n |r|j                  dk(  r ||       d {   S |j                  j                  j                  t        j                  d      }|t        v r ||       d {   S |j                  j                  d      st!        dd      t#        |j                  j                  d             d {   }||j$                  _         ||       d {   S 7 7 {7 )7 
# t         $ rL}	t)        |	j*                  t-        d|	j.                  d 	      j0                  |	j                  
      cY d }	~	S d }	~	ww xY ww)NFTOPTIONS Authorizationr   Unauthorizedr   )statusmessagedata)r   contentheaders)approuterroutesmatchesscoper   NONEmethodurlpathreplacer	   
API_PREFIXPUBLIC_ROUTESr'   getr   r   stateuserr   r   r   r   __dict__)
selfr   	call_nextroute_existsroutematch_r0   r6   	exceptions
             r   dispatchz!AuthenticationMiddleware.dispatch    si    '	 L ++22 ==7qEJJ&#'L	 3  7>>Y#>&w/// ;;##++H,?,?DD }$&w/// ??&&7#NKK)'//*=*=o*NOOD!%GMM"7+++# 0 0 P , 		%11' %,, (!)) 		s   F"AE
 !E
 <E=E
  F"AE
 E	E
 F"AE
 E E
 =E>E
 F"E
 E
 E
 E
 
	FAFFF"FF"N)__name__
__module____qualname__r   r?        r   r   r      s    )g )rD   r   )fastapir   fastapi.responsesr   starlette.middleware.baser   starlette.routingr   app.schemasr   app.exceptionsr   app.configs.settingsr	   r   r
   r   r3   strdictr   r   rC   rD   r   <module>rN      sO     * 8 # ' ( ) 
 8 E# E$ E+1 +rD   