
    ɯei                    n    d dl mZ d dlmZmZ ddlmZ ddlmZm	Z	 ddl
mZ erddlmZ  G d	 d
e      Zy)    )annotations)TYPE_CHECKINGAny   )ID_TOKEN_AUTHENTICATOR   )AuthByPluginAuthType)AuthByWebBrowser)SnowflakeConnectionc                       e Zd ZdZed	d       Zed
d       Z	 	 	 	 	 	 	 	 	 	 	 	 d fdZddZddZ		 	 	 	 	 	 ddZ
ddZ xZS )AuthByIdTokenzInternal IdToken Based Authentication.

    Works by accepting an id_toke and use that to authenticate. Only be used when users are using EXTERNAL_BROWSER_AUTHENTICATOR
    c                "    t         j                  S N)r
   ID_TOKENselfs    b/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/snowflake/connector/auth/idtoken.pytype_zAuthByIdToken.type_   s           c                    | j                   S r   	_id_tokenr   s    r   assertion_contentzAuthByIdToken.assertion_content   s    ~~r   c                j    t        |   di | || _        || _        || _        || _        || _        y)z(Initialized an instance with an IdToken.N )super__init__r   _application	_protocol_host_port)r   id_tokenapplicationprotocolhostportkwargs	__class__s          r   r   zAuthByIdToken.__init__   s9     	"6"%-'!

r   c                    d | _         y r   r   r   s    r   reset_secretszAuthByIdToken.reset_secrets-   s	    r   c                     y r   r   )r   r(   s     r   preparezAuthByIdToken.prepare0   s    r   c                  t        | j                  | j                  | j                  | j                  |j
                  |j                        |_        |j                  |j                         |j                  j                          ddiS )N)r$   r%   r&   r'   timeoutbackoff_generatorsuccessT)r   r   r    r!   r"   login_timeout_backoff_generator
auth_class_authenticate_auth_classr+   )r   connr(   s      r   reauthenticatezAuthByIdToken.reauthenticate3   sq     +))^^&&"55
 	4??+&&(4  r   c                @    t         |d   d<   | j                  |d   d<   y)z9Idtoken needs the authenticator and token attributes set.dataAUTHENTICATORTOKENN)r   r   )r   bodys     r   update_bodyzAuthByIdToken.update_bodyE   s"    (>V_% $VWr   )returnr
   )r?   str)r#   r@   r$   r@   r%   
str | Noner&   rA   r'   rA   r?   None)r?   rB   )r(   r   r?   rB   )r7   r   r(   r   r?   zdict[str, bool])r=   zdict[Any, Any]r?   rB   )__name__
__module____qualname____doc__propertyr   r   r   r+   r-   r8   r>   __classcell__)r)   s   @r   r   r      s    
 ! !    	
   
"! "! 	!
 
!$/r   r   N)
__future__r   typingr   r   networkr   	by_pluginr	   r
   
webbrowserr   
connectionr   r   r   r   r   <module>rO      s&    " % , - (0:/L :/r   