
    WWlj                         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 g d
Zg dZdedefdZ G d de      Zy)    )Request)JSONResponse)BaseHTTPMiddleware)Match)ResponseWrapper)HTTPException)settingsN)ExpiredSignatureErrorInvalidTokenError)/health-checkz/streamz/save/conversationz/rate/conversation)/r   z/redocz/openapi.json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-ibe-bot-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           	      Z  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      }|j                  j                  d      }|j                  j                  d      }	|t        vr |t        j                   k7  rt#        dd	      ||j$                  _        |	|j$                  _        |t*        v s|t        v r ||       d {   S |j                  j                  d
      st#        dd	      t-        |j                  j                  d
             d {   }
|
|j$                  _         ||       d {   S 7 N7 |7 *7 # t"        $ rL}t1        |j2                  t5        d|j6                  d       j8                  |j                        cY d }~S d }~ww xY ww)NFTOPTIONS HOTEL_IDSUB_HOTEL_IDr   zHotel ID is invalidr   AuthorizationUnauthorized)statusmessagedata)r   contentheaders)approuterroutesmatchesscoper   NONEmethodurlpathreplacer	   
API_PREFIXr+   get
DOC_ROUTESIDr   stater#   r$   PUBLIC_ROUTESr   userr   r   r   r   __dict__)selfr   	call_nextroute_existsroutematch_r4   r#   r$   r<   	exceptions               r   dispatchz!AuthenticationMiddleware.dispatch*   s    7	 L ++22 ==7qEJJ&#'L	 3  7>>Y#>&w/// ;;##++H,?,?DD**:6H"??..~>L:% x{{*'C@UVV
 &.GMM")5GMM& }$
(:&w/// ??&&7#NKK)'//*=*=o*NOOD!%GMM"7+++C 0. 0 P , 		%11' %,, (!)) 		s   H+AG !G <G
=G  H+CG GG H+AG $G% G GG 	H+
G G G G 	H(AH#H(H+#H((H+N)__name__
__module____qualname__r   rE        r   r   r   (   s    9g 9rJ   r   )fastapir   fastapi.responsesr   starlette.middleware.baser   starlette.routingr   app.schemasr   app.exceptionsr   app.configs.settingsr	   r   r
   r   r;   r8   strdictr   r   rI   rJ   r   <module>rT      sQ     * 8 # ' ( ) 
 8
E# E$ E;1 ;rJ   