§
    éƒtjÃ
  ã                   ó0  — d Z ddlZddlZddlmZmZmZ ddlmZ ddlm	Z	m
Z
mZ ddlmZmZ 	 ddlmZmZ dZn # e$ r 	 ddlZd	Zn# e$ r d
ZY nw xY wY nw xY wej                             d ej        d¦  «        ¦  «        ZdZ eej                             dd¦  «        ¦  «        Zej                             dd¦  «        Zej                             dd¦  «        Z ed¬¦  «        Zde de!fd„Z"de!de fd„Z#deedz   e	e¦  «        f         de!fd„Z$dS )z&Simple JWT-based admin authentication.é    N)ÚdatetimeÚ	timedeltaÚtimezone)Ú	Annotated)ÚDependsÚHTTPExceptionÚstatus)ÚHTTPAuthorizationCredentialsÚ
HTTPBearer)ÚJWTErrorÚjwtÚjoseÚpyjwtÚnoneÚ
JWT_SECRETé    ÚHS256ÚJWT_EXPIRE_MINUTESÚ60ÚADMIN_USERNAMEÚadminÚADMIN_PASSWORDÚchangemeF)Ú
auto_errorÚdataÚreturnc                 ó  — |                       ¦   «         }t          j        t          j        ¦  «        t          t          ¬¦  «        z   }||d<   t          dk    r!t          j	        |t          t          ¬¦  «        S t          dk    r!t          j	        |t          t          ¬¦  «        S dd l}dd l}|                     |                     |t"          ¬¦  «         	                    ¦   «         ¦  «                             ¦   «         S )N)ÚminutesÚexpr   )Ú	algorithmr   r   )Údefault)Úcopyr   Únowr   Úutcr   ÚACCESS_TOKEN_EXPIRE_MINUTESÚ_BACKENDÚ	_jose_jwtÚencodeÚ
SECRET_KEYÚ	ALGORITHMÚ_pyjwtÚbase64ÚjsonÚurlsafe_b64encodeÚdumpsÚstrÚdecode)r   ÚpayloadÚexpirer,   r-   s        ú$/var/www/html/CA-Chatbot/app/auth.pyÚcreate_access_tokenr5   #   sÕ   € Ø�iŠi‰kŒk€GÝŒ\�(œ,Ñ'Ô'­)Õ<WÐ*XÑ*XÔ*XÑX€FØ€GˆE�Nå�6ÒÐÝÔ ­½yÐIÑIÔIÐIÝ	�WÒ	Ð	ÝŒ}˜W¥j½IÐFÑFÔFÐFð 	ÐÐÐÐÐÐÐØ×'Ò'¨¯
ª
°7ÅC¨
Ñ(HÔ(H×(OÒ(OÑ(QÔ(QÑRÔR×YÒYÑ[Ô[Ð[ó    Útokenc                 ó@  — t           dk    r"t          j        | t          t          g¬¦  «        S t           dk    r"t          j        | t          t          g¬¦  «        S dd l}dd l}|                     | 	                    | dz   ¦  «                             ¦   «         ¦  «        S )Nr   )Ú
algorithmsr   r   z==)
r&   r'   r1   r)   r*   r+   r,   r-   ÚloadsÚurlsafe_b64decode)r7   r,   r-   s      r4   Údecode_tokenr<   2   s“   € Ý�6ÒÐÝÔ ¥z½y¸kÐJÑJÔJÐJÝ	�WÒ	Ð	ÝŒ}˜U¥J½I¸;ÐGÑGÔGÐGàÐÐÐÐÐÐÐØ�zŠz˜&×2Ò2°5¸4±<Ñ@Ô@×GÒGÑIÔIÑJÔJÐJr6   Úcredentialsc                 ó  — | st          t          j        dddi¬¦  «        ‚	 t          | j        ¦  «        }|                     dd¦  «        }|st          d¦  «        ‚|S # t          $ r t          t          j        dddi¬¦  «        ‚w xY w)	u>   FastAPI dependency â€” raises 401 if token is missing/invalid.zAuthentication requiredzWWW-AuthenticateÚBearer)Ústatus_codeÚdetailÚheadersÚsubÚ zMissing subzInvalid or expired token)r   r	   ÚHTTP_401_UNAUTHORIZEDr<   r=   ÚgetÚ
ValueErrorÚ	Exception)r=   r2   Úusernames      r4   Úverify_admin_tokenrJ   <   sº   € ð ð 
ÝÝÔ4Ø,Ø'¨Ð2ð
ñ 
ô 
ð 	
ð

Ý˜{Ô6Ñ7Ô7ˆØŸš E¨2Ñ.Ô.ˆØð 	,Ý˜]Ñ+Ô+Ð+ØˆøÝð 
ð 
ð 
ÝÝÔ4Ø-Ø'¨Ð2ð
ñ 
ô 
ð 	
ð
øøøs   ¢<A Á)B)%Ú__doc__ÚosÚsecretsr   r   r   Útypingr   Úfastapir   r   r	   Úfastapi.securityr
   r   r   r   r   r'   r&   ÚImportErrorr+   ÚenvironrF   Ú	token_hexr)   r*   Úintr%   r   r   Úbearer_schemeÚdictr0   r5   r<   rJ   © r6   r4   ú<module>rX      s#  ðØ ,Ð ,à 	€	€	€	Ø €€€Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eð
Ø/Ð/Ð/Ð/Ð/Ð/Ð/Ð/à€H€HøØð ð ð ðØÐÐÐàˆˆøØð ð ð Øˆˆˆðøøøøøðøøøð ŒZ�^Š^˜LÐ*;¨'Ô*;¸BÑ*?Ô*?Ñ@Ô@€
Ø€	Ø!˜c "¤*§.¢.Ð1EÀtÑ"LÔ"LÑMÔMÐ ð ”—’Ð 0°'Ñ:Ô:€Ø”—’Ð 0°*Ñ=Ô=€à�
 eÐ,Ñ,Ô,€ð\˜dð \ sð \ð \ð \ð \ðK˜ð K ð Kð Kð Kð Kð
ØÐ7¸$Ñ>ÀÀÈÑ@VÔ@VÐVÔWð
àð
ð 
ð 
ð 
ð 
ð 
s2   ®
9 ¹A¿AÁAÁAÁAÁAÁAÁA