
    l h                       d Z ddlm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 ddlmZ ddlmZ e G d	 d
             Ze G d d             Ze G d d             Z G d dej&                        Ze G d d             Z	 dZdZdZdZdZ G d de      Z G d de      Z G d de      Z G d de      Z G d  d!e      Zd#d"Z y)$zFConstants, types, and classes shared across OIDC auth implementations.    )annotationsN)	dataclassfield)Optional)quote)_get_azure_response)_get_gcp_responsec                  P    e Zd ZU ded<    ed      Zded<    ed      Zded<   y)	OIDCIdPInfostrissuerNdefaultOptional[str]clientIdzOptional[list[str]]requestScopes)__name__
__module____qualname____annotations__r   r   r        ~/var/www/html/SchoolMeal/SchoolMeal/pds_admin_SchoolMeal/Backend/venv/lib/python3.12/site-packages/pymongo/auth_oidc_shared.pyr   r      s&    K#D1Hm1).t)<M&<r   r   c                  d    e Zd ZU ded<   ded<   ded<    ed      Zd	ed
<    ed      Zded<   y)OIDCCallbackContextfloattimeout_secondsr   usernameintversionNr   r   refresh_tokenzOptional[OIDCIdPInfo]idp_info)r   r   r   r   r   r!   r"   r   r   r   r   r   $   s1    ML#(#6M=6&+D&9H#9r   r   c                  P    e Zd ZU ded<    ed      Zded<    ed      Zded<   y)	OIDCCallbackResultr   access_tokenNr   zOptional[float]expires_in_secondsr   r!   )r   r   r   r   r   r&   r!   r   r   r   r$   r$   -   s'    */*==#(#6M=6r   r$   c                  6    e Zd ZdZej
                  dd       Zy)OIDCCallbackz)A base class for defining OIDC callbacks.c                     y)z/Convert the given BSON value into our own type.Nr   selfcontexts     r   fetchzOIDCCallback.fetch7   s    r   Nr,   r   returnr$   )r   r   r   __doc__abcabstractmethodr-   r   r   r   r(   r(   4   s    3> >r   r(   c                      e Zd ZU  ed      Zded<    ed      Zded<    ed      Zded<    ee      Z	d	ed
<    ed      Z
ded<   dZded<   y)_OIDCPropertiesNr   zOptional[OIDCCallback]callbackhuman_callbackr   environment)default_factoryz	list[str]allowed_hoststoken_resource r   r   )r   r   r   r   r5   r   r6   r7   listr9   r:   r   r   r   r   r4   r4   <   sY    ',T':H$:-24-@N*@!&t!4K4$T:M9:$)$$7NM7Hcr   r4      i,     <   g?c                      e Zd ZddZy)_OIDCTestCallbackc                    t         j                  j                  d      }|st        d      t	        |      5 }t        |j                         j                               cd d d        S # 1 sw Y   y xY w)NOIDC_TOKEN_FILEzIMONGODB-OIDC with an "test" provider requires "OIDC_TOKEN_FILE" to be setr%   osenvirongetRuntimeErroropenr$   readstripr+   r,   
token_filefids       r   r-   z_OIDCTestCallback.fetchP   sd    ZZ^^$56
[  * 	G%388:3C3C3EF	G 	G 	G   (A**A3Nr.   r   r   r   r-   r   r   r   rA   rA   O       Gr   rA   c                      e Zd ZddZy)_OIDCAWSCallbackc                    t         j                  j                  d      }|st        d      t	        |      5 }t        |j                         j                               cd d d        S # 1 sw Y   y xY w)NAWS_WEB_IDENTITY_TOKEN_FILEzTMONGODB-OIDC with an "aws" provider requires "AWS_WEB_IDENTITY_TOKEN_FILE" to be setrD   rE   rM   s       r   r-   z_OIDCAWSCallback.fetch[   sd    ZZ^^$AB
f  * 	G%388:3C3C3EF	G 	G 	GrP   Nr.   rQ   r   r   r   rT   rT   Z   rR   r   rT   c                      e Zd ZddZddZy)_OIDCAzureCallbackc                $    t        |      | _        y Nr   r:   r+   r:   s     r   __init__z_OIDCAzureCallback.__init__f       #N3r   c                ~    t        | j                  |j                  |j                        }t	        |d   |d         S )Nr%   
expires_in)r%   r&   )r   r:   r   r   r$   r+   r,   resps      r   r-   z_OIDCAzureCallback.fetchi   s>    "4#6#68H8H'JaJab!n-$|BT
 	
r   Nr:   r   r/   Noner.   r   r   r   r]   r-   r   r   r   rX   rX   e   s    4
r   rX   c                      e Zd ZddZddZy)_OIDCGCPCallbackc                $    t        |      | _        y rZ   r[   r\   s     r   r]   z_OIDCGCPCallback.__init__q   r^   r   c                `    t        | j                  |j                        }t        |d         S )Nr%   rD   )r	   r:   r   r$   ra   s      r   r-   z_OIDCGCPCallback.fetcht   s*     !4!4g6M6MN!tN/CDDr   Nrc   r.   re   r   r   r   rg   rg   p   s    4Er   rg   c                      e Zd ZddZy)_OIDCK8SCallbackc                *    t        t                     S )NrD   )r$   _get_k8s_tokenr*   s     r   r-   z_OIDCK8SCallback.fetchz   s    !~/?@@r   Nr.   rQ   r   r   r   rk   rk   y   s    Ar   rk   c                     d} dD ](  }|t         j                  v st         j                  |   } * t        |       5 }|j                         cd d d        S # 1 sw Y   y xY w)Nz3/var/run/secrets/kubernetes.io/serviceaccount/token)AZURE_FEDERATED_TOKEN_FILErV   )rF   rG   rJ   rK   )fnamekeyrO   s      r   rm   rm   ~   sX    AEL $"**JJsOE$ 
e xxz  s   AA)r/   r   )!r0   
__future__r   r1   rF   dataclassesr   r   typingr   urllib.parser   pymongo._azure_helpersr   pymongo._gcp_helpersr	   r   r   r$   ABCr(   r4   TOKEN_BUFFER_MINUTESHUMAN_CALLBACK_TIMEOUT_SECONDSCALLBACK_VERSION MACHINE_CALLBACK_TIMEOUT_SECONDSTIME_BETWEEN_CALLS_SECONDSrA   rT   rX   rg   rk   rm   r   r   r   <module>r~      s    M " 
 	 (   6 2 = = = : : : 7 7 7>377 >    < !'  #%    G GG| G
 
E| EA| A
r   