
    tni                        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mZ d dl	m
Z
 ddlmZ  ej        d          Z G d de
          Zd	ed
dfdZddZd
ee         fdZd
ee         fdZded
efdZ G d d          ZdS )    N)LiteralOptional)	BaseModel   )get_auth_pathfastapi_clic                       e Zd ZU eed<   dS )
AuthConfigaccess_tokenN)__name__
__module____qualname__str__annotations__     Y/var/www/html/gpu-tools/venv/lib/python3.11/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
LL-y9992244wGGG
LL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
LL.	::: 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
LL/;;; 5666t
LL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*   3   sZ    
LL%&&& ""I)***t
LL4555!!r   tokenc                 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   ?   s   ,C  u::??LLGUTTT4( 'llQ&&7 	+sa'k**G//#s++33C==(11z-00u%%;LL89995#s## 	LLDd3iiPPP4y{{!S(
D		
 	
 	
 ND01   2A666ttttts+   AE7 B*E7  =E7 ?7E7 7F8F33F8c                   ^    e Zd ZU ed         ed<   d	dZdee         fdZde	fdZ
de	fdZdS )
Identity)r+   user	auth_moder   Nc                     t                      | _        d| _        |                                 x}r|| _        d| _        d S d S )NrP   r+   )r*   r+   rQ   _get_token_from_env)self	env_tokens     r   __init__zIdentity.__init__r   sM    $&&
 002229 	%"DJ$DNNN	% 	%r   c                 @    t           j                            d          S )NFASTAPI_CLOUD_TOKEN)osenvironr=   rT   s    r   rS   zIdentity._get_token_from_env{   s    z~~3444r   c                 <    | j         sdS t          | j                   S )NT)r+   rM   r[   s    r   rK   zIdentity.is_expired~   s!    z 	4tz***r   c                     | j         t                              d           dS | j        dk    r0|                                 rt                              d           dS t                              d           dS )NzLogin status: False (no token)FrP   z#Login status: False (token expired)zLogin status: TrueT)r+   r   r   rQ   rK   r[   s    r   is_logged_inzIdentity.is_logged_in   sn    :LL9:::5>V##(9(9#LL>???5)***tr   r   N)r   r   r   r   r   rV   r   r   rS   boolrK   r^   r   r   r   rO   rO   o   s         ''''% % % %5Xc] 5 5 5 5+D + + + +
d 
 
 
 
 
 
r   rO   r_   )r9   rB   r;   loggingrY   rA   typingr   r   pydanticr   configr   	getLoggerr   r
   r   r$   r(   r   r*   r`   rM   rO   r   r   r   <module>rf      s       				  $ $ $ $ $ $ $ $       ! ! ! ! ! !		=	)	)       5 5 5 5 5 5J J J J	Q(:. 	Q 	Q 	Q 	Q	"# 	" 	" 	" 	"-3 -4 - - - -`         r   