§
    >xÅjo  ã                   ó  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 ddl
mZ  ej        d¦  «        Zed         Z G d„ d	e	¦  «        Zd
eddfd„Zdd„Zdedz  fd„Zdedz  fd„Zdedefd„Z G d„ d¦  «        ZdS )é    N)ÚLiteral)Ú	BaseModelé   )Úget_auth_pathÚfastapi_cli)ÚtokenÚuserc                   ó   — e Zd ZU eed<   dS )Ú
AuthConfigÚaccess_tokenN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__© ó    úMC:\Projects\Historical\venv\Lib\site-packages\fastapi_cloud_cli/utils/auth.pyr   r      s   € € € € € € ØÐÐÑÐÐr   r   Ú	auth_dataÚreturnc                 óÞ   — t          ¦   «         }t                               d|¦  «         |                     |                      ¦   «         d¬¦  «         t                               d¦  «         d S )NzWriting auth config to: %súutf-8©Úencodingz Auth config written successfully)r   ÚloggerÚdebugÚ
write_textÚmodel_dump_json)r   Ú	auth_paths     r   Úwrite_auth_configr       s^   € Ý‘”€IÝ
‡L‚LÐ-¨yÑ9Ô9Ð9à×Ò˜×2Ò2Ñ4Ô4¸wÐÑGÔGÐGÝ
‡L‚LÐ3Ñ4Ô4Ð4Ð4Ð4r   c                  ó  — t          ¦   «         } t                               d| ¦  «         |                      ¦   «         r0|                      ¦   «          t                               d¦  «         d S t                               d¦  «         d S )NzDeleting auth config at: %sz Auth config deleted successfullyz1Auth config file doesn't exist, nothing to delete)r   r   r   ÚexistsÚunlink©r   s    r   Údelete_auth_configr%      sy   € Ý‘”€IÝ
‡L‚LÐ.°	Ñ:Ô:Ð:à×ÒÑÔð JØ×ÒÑÔÐÝ�ŠÐ7Ñ8Ô8Ð8Ð8Ð8å�ŠÐHÑIÔIÐIÐIÐIr   c                  óD  — t          ¦   «         } t                               d| ¦  «         |                      ¦   «         st                               d¦  «         d S t                               d¦  «         t                               |                      d¬¦  «        ¦  «        S )NzReading auth config from: %szAuth config file doesn't existzAuth config loaded successfullyr   r   )r   r   r   r"   r   Úmodel_validate_jsonÚ	read_textr$   s    r   Úread_auth_configr)   )   s„   € Ý‘”€IÝ
‡L‚LÐ/°Ñ;Ô;Ð;à×ÒÑÔð Ý�ŠÐ5Ñ6Ô6Ð6Øˆtå
‡L‚LÐ2Ñ3Ô3Ð3Ý×)Ò)¨)×*=Ò*=ÀwÐ*=Ñ*OÔ*OÑPÔPÐPr   c                  óÐ   — t                                d¦  «         t          ¦   «         } | €t                                d¦  «         d S t                                d¦  «         | j        S )NzGetting auth tokenzNo auth data foundz!Auth token retrieved successfully)r   r   r)   r   )r   s    r   Ú_get_auth_tokenr+   5   sZ   € Ý
‡L‚LÐ%Ñ&Ô&Ð&Ý Ñ"Ô"€IàÐÝ�ŠÐ)Ñ*Ô*Ð*Øˆtå
‡L‚LÐ4Ñ5Ô5Ð5ØÔ!Ð!r   r   c                 óv  — 	 |                       d¦  «        }t          |¦  «        dk    r*t                               dt          |¦  «        ¦  «         dS |d         }t          |¦  «        dz  x}r|dd|z
  z  z  }|                     dd	¦  «                             d
d¦  «        }t          j        |¦  «        }t          j        |¦  «        }| 	                    d¦  «        }|€t                               d¦  «         dS t          |t          ¦  «        s*t                               dt          |¦  «        ¦  «         dS t          j        ¦   «         }||k    }t                               d|||¦  «         |S # t          j        t          j        f$ r&}	t                               d|	¦  «         Y d }	~	dS d }	~	ww xY w)Nú.é   z,Invalid JWT format: expected 3 parts, got %dTr   é   ú=ú-ú+Ú_ú/ÚexpzNo 'exp' claim found in tokenFz)Invalid 'exp' claim: expected int, got %sz6Token expiration check: current=%d, exp=%d, expired=%szError parsing JWT token: %s)ÚsplitÚlenr   r   ÚreplaceÚbase64Ú	b64decodeÚjsonÚloadsÚgetÚ
isinstanceÚintÚtypeÚtimeÚbinasciiÚErrorÚJSONDecodeError)
r   ÚpartsÚpayloadÚpaddingÚdecoded_bytesÚpayload_datar5   Úcurrent_timeÚ
is_expiredÚes
             r   Ú_is_jwt_expiredrM   A   s«  € ð,Ø—’˜CÑ Ô ˆåˆu‰:Œ:˜Š?ˆ?Ý�LŠLÐGÍÈUÉÌÑTÔTÐTØ�4à˜”(ˆõ ˜'‘l”l QÑ&Ð&ˆ7ð 	+Ø�s˜a '™kÑ*Ñ*ˆGà—/’/ # sÑ+Ô+×3Ò3°C¸Ñ=Ô=ˆÝÔ(¨Ñ1Ô1ˆÝ”z -Ñ0Ô0ˆà×Ò˜uÑ%Ô%ˆàˆ;Ý�LŠLÐ8Ñ9Ô9Ð9à�5å˜#�sÑ#Ô#ð 	Ý�LŠLÐDÅdÈ3ÁiÄiÑPÔPÐPà�4å”y‘{”{ˆà! SÒ(ˆ
å�ŠØDØØØñ		
ô 	
ð 	
ð ÐøÝŒN�DÔ0Ð1ð ð ð Ý�ŠÐ2°AÑ6Ô6Ð6àˆtˆtˆtˆtˆtøøøøðøøøs+   ‚AE7 ÁB*E7 Ä =E7 Ä?7E7 Å7F8ÆF3Æ3F8c                   ó~   — e Zd Zd	d„Zededz  fd„¦   «         Zededz  fd„¦   «         Zdefd„Z	defd„Z
defd„ZdS )
ÚIdentityr   Nc                 ót   — t          ¦   «         | _        t          j                             d¦  «        | _        d S )NÚFASTAPI_CLOUD_TOKEN)r+   Ú_user_tokenÚosÚenvironr=   Ú_deploy_token©Úselfs    r   Ú__init__zIdentity.__init__r   s-   € Ý*Ñ,Ô,ˆÔÝ)+¬¯ªÐ8MÑ)NÔ)NˆÔÐÐr   c                 ó   — | j         S ©N)rR   rV   s    r   Ú
user_tokenzIdentity.user_tokenv   s   € àÔÐr   c                 ó   — | j         S rZ   )rU   rV   s    r   Údeploy_tokenzIdentity.deploy_tokenz   s   € àÔ!Ð!r   c                 ó<   — | j         sdS t          | j         ¦  «        S )NT)rR   rM   rV   s    r   Úis_user_token_expiredzIdentity.is_user_token_expired~   s#   € ØÔð 	Ø�4å˜tÔ/Ñ0Ô0Ð0r   c                 óà   — | j         €t                               d¦  «         dS |                      ¦   «         rt                               d¦  «         dS t                               d¦  «         dS )NzLogin status: False (no token)Fz#Login status: False (token expired)zLogin status: TrueT)rR   r   r   r_   rV   s    r   Úis_logged_inzIdentity.is_logged_in„   sg   € ØÔÐ#Ý�LŠLÐ9Ñ:Ô:Ð:Ø�5à×%Ò%Ñ'Ô'ð 	Ý�LŠLÐ>Ñ?Ô?Ð?Ø�5å�ŠÐ)Ñ*Ô*Ð*Øˆtr   c                 ó€   — | j         €t                               d¦  «         dS t                               d¦  «         dS )NzDeploy token is not providedFzDeploy token foundT)rU   r   r   rV   s    r   Úhas_deploy_tokenzIdentity.has_deploy_token�   s;   € ØÔÐ%Ý�LŠLÐ7Ñ8Ô8Ð8Ø�5å�ŠÐ)Ñ*Ô*Ð*Øˆtr   ©r   N)r   r   r   rX   Úpropertyr   r[   r]   Úboolr_   ra   rc   r   r   r   rO   rO   q   sÓ   € € € € € ðOð Oð Oð Oð ð ˜C $™Jð  ð  ð  ñ „Xð ð ð"˜c D™jð "ð "ð "ñ „Xð"ð1 tð 1ð 1ð 1ð 1ð
˜dð 
ð 
ð 
ð 
ð $ð ð ð ð ð ð r   rO   rd   )r9   rB   r;   ÚloggingrS   rA   Útypingr   Úpydanticr   Úconfigr   Ú	getLoggerr   ÚAuthModer   r    r%   r)   r   r+   rf   rM   rO   r   r   r   ú<module>rm      sŠ  ðØ €€€Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !à	ˆÔ	˜=Ñ	)Ô	)€à�?Ô#€ðð ð ð ð �ñ ô ð ð5 ð 5°ð 5ð 5ð 5ð 5ðJð Jð Jð Jð	Q˜* tÑ+ð 	Qð 	Qð 	Qð 	Qð	"˜˜t™ð 	"ð 	"ð 	"ð 	"ð-˜3ð - 4ð -ð -ð -ð -ð`%ð %ð %ð %ð %ñ %ô %ð %ð %ð %r   