
    (phD                        S r SSKJr  SSKrSSKJr  SSKJr  Sr " S S5      r " S	 S
\5      r	 " S S\5      r
 " S S5      r " S S\5      r " S S\5      r " S S\R                  5      r " S S5      rS rS rS rS rS rg)z.Firebase auth providers management sub module.    )parseN)_auth_utils)	_user_mgtd   c                   N    \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	Sr
g)	ProviderConfig   z9Parent type for all authentication provider config types.c                     Xl         g N_dataselfdatas     Q/var/www/html/venv/lib/python3.13/site-packages/firebase_admin/_auth_providers.py__init__ProviderConfig.__init__   s    
    c                 H    U R                   S   nUR                  S5      S   $ )Nname/)r   split)r   r   s     r   provider_idProviderConfig.provider_id"   s#    zz&!zz#r""r   c                 8    U R                   R                  S5      $ )NdisplayNamer   getr   s    r   display_nameProviderConfig.display_name'   s    zz~~m,,r   c                 :    U R                   R                  SS5      $ )NenabledFr   r    s    r   r$   ProviderConfig.enabled+   s    zz~~i//r   r   N)__name__
__module____qualname____firstlineno____doc__r   propertyr   r!   r$   __static_attributes__ r   r   r   r      sF    C # # - - 0 0r   r   c                   h    \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
Srg	)
OIDCProviderConfig0   zsRepresents the OIDC auth provider configuration.

See https://openid.net/specs/openid-connect-core-1_0-final.html.
c                      U R                   S   $ )Nissuerr   r    s    r   r2   OIDCProviderConfig.issuer6   s    zz(##r   c                      U R                   S   $ )NclientIdr   r    s    r   	client_idOIDCProviderConfig.client_id:   s    zz*%%r   c                 8    U R                   R                  S5      $ )NclientSecretr   r    s    r   client_secret OIDCProviderConfig.client_secret>   s    zz~~n--r   c                 Z    U R                   R                  S0 5      R                  SS5      $ )NresponseTypeidTokenFr   r    s    r   id_token_response_type)OIDCProviderConfig.id_token_response_typeB   s$    zz~~nb155iGGr   c                 Z    U R                   R                  S0 5      R                  SS5      $ )Nr=   codeFr   r    s    r   code_response_type%OIDCProviderConfig.code_response_typeF   s$    zz~~nb155feDDr   r-   N)r&   r'   r(   r)   r*   r+   r2   r6   r:   r?   rC   r,   r-   r   r   r/   r/   0   so    
 $ $ & & . . H H E Er   r/   c                   h    \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
Srg	)
SAMLProviderConfigK   zRepresents he SAML auth provider configuration.

See http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html.
c                 @    U R                   R                  S0 5      S   $ )N	idpConfigidpEntityIdr   r    s    r   idp_entity_id SAMLProviderConfig.idp_entity_idQ   s    zz~~k2.}==r   c                 @    U R                   R                  S0 5      S   $ )NrI   ssoUrlr   r    s    r   sso_urlSAMLProviderConfig.sso_urlU   s    zz~~k2.x88r   c                 t    U R                   R                  S0 5      S   nU Vs/ s H  o"S   PM	     sn$ s  snf )NrI   idpCertificatesx509Certificater   )r   certscs      r   x509_certificates$SAMLProviderConfig.x509_certificatesY   s8    

{B/0AB.34e#$e444s   5c                 @    U R                   R                  S0 5      S   $ )NspConfigcallbackUrir   r    s    r   callback_urlSAMLProviderConfig.callback_url^   s    zz~~j"-m<<r   c                 @    U R                   R                  S0 5      S   $ )NrY   
spEntityIdr   r    s    r   rp_entity_idSAMLProviderConfig.rp_entity_idb   s    zz~~j"-l;;r   r-   N)r&   r'   r(   r)   r*   r+   rK   rO   rV   r[   r_   r,   r-   r   r   rF   rF   K   sk    
 > > 9 9 5 5 = = < <r   rF   c                   Z    \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	S r
S rS	rg
)ListProviderConfigsPageg   aZ  Represents a page of AuthProviderConfig instances retrieved from a Firebase project.

Provides methods for traversing the provider configs included in this page, as well as
retrieving subsequent pages. The iterator returned by ``iterate_all()`` can be used to iterate
through all provider configs in the Firebase project starting from this page.
c                 6    Xl         X0l        U" X#5      U l        g r   )	_download_max_results_current)r   download
page_tokenmax_resultss       r   r    ListProviderConfigsPage.__init__o   s    !' 9r   c                     [         e)zBA list of ``AuthProviderConfig`` instances available in this page.)NotImplementedErrorr    s    r   provider_configs(ListProviderConfigsPage.provider_configst   s
     "!r   c                 :    U R                   R                  SS5      $ )zKPage token string for the next page (empty string indicates no more pages).nextPageToken )rg   r   r    s    r   next_page_token'ListProviderConfigsPage.next_page_tokeny   s     }}  "55r   c                 ,    [        U R                  5      $ )z6A boolean indicating whether more pages are available.)boolrs   r    s    r   has_next_page%ListProviderConfigsPage.has_next_page~   s     D(())r   c                     U R                   (       a1  U R                  U R                  U R                  U R                  5      $ g)zRetrieves the next page of provider configs, if available.

Returns:
    ListProviderConfigsPage: Next page of provider configs, or None if this is the last
    page.
N)rw   	__class__re   rs   rf   r    s    r   get_next_page%ListProviderConfigsPage.get_next_page   s3     >>$..$2F2FHYHYZZr   c                     [        U 5      $ )a5  Retrieves an iterator for provider configs.

Returned iterator will iterate through all the provider configs in the Firebase project
starting from this page. The iterator will never buffer more than one page of configs
in memory at a time.

Returns:
    iterator: An iterator of AuthProviderConfig instances.
)_ProviderConfigIteratorr    s    r   iterate_all#ListProviderConfigsPage.iterate_all   s     't,,r   )rg   re   rf   N)r&   r'   r(   r)   r*   r   r+   rn   rs   rw   r{   r   r,   r-   r   r   rb   rb   g   sR    :
 " " 6 6 * *	
-r   rb   c                   $    \ rS rSr\S 5       rSrg)_ListOIDCProviderConfigsPage   c                 x    U R                   R                  S/ 5       Vs/ s H  n[        U5      PM     sn$ s  snf )NoauthIdpConfigs)rg   r   r/   r   s     r   rn   -_ListOIDCProviderConfigsPage.provider_configs   s5    59]]5F5FGXZ\5]^5]T"4(5]^^^   7r-   Nr&   r'   r(   r)   r+   rn   r,   r-   r   r   r   r      s    _ _r   r   c                   $    \ rS rSr\S 5       rSrg)_ListSAMLProviderConfigsPage   c                 x    U R                   R                  S/ 5       Vs/ s H  n[        U5      PM     sn$ s  snf )NinboundSamlConfigs)rg   r   rF   r   s     r   rn   -_ListSAMLProviderConfigsPage.provider_configs   s5    59]]5F5FG[]_5`a5`T"4(5`aaar   r-   Nr   r-   r   r   r   r      s    b br   r   c                   $    \ rS rSr\S 5       rSrg)r~      c                 .    U R                   R                  $ r   )_current_pagern   r    s    r   items_ProviderConfigIterator.items   s    !!222r   r-   N)r&   r'   r(   r)   r+   r   r,   r-   r   r   r~   r~      s    3 3r   r~   c                       \ rS rSrSrSrSS jrS r  SS jr   SS jr	S	 r
S\4S
 jrS\4S jrS r SS jr  SS jrS rS\4S jrS\4S jrS\4S jrS rSrg)ProviderConfigClient   z1Client for managing Auth provider configurations.z)https://identitytoolkit.googleapis.com/v2Nc                     Xl         U=(       d    U R                  nSR                  XR5      U l        U(       a%  U =R                  SR                  U5      -  sl        g g )Nz{0}/projects/{1}z/tenants/{0})http_clientPROVIDER_CONFIG_URLformatbase_url)r   r   
project_id	tenant_idurl_override
url_prefixs         r   r   ProviderConfigClient.__init__   sK    &!=T%=%=
*11*IMM^229==M r   c                 p    [        U5        U R                  SSR                  U5      5      n[        U5      $ )Nr   /oauthIdpConfigs/{0})_validate_oidc_provider_id_make_requestr   r/   r   r   bodys      r   get_oidc_provider_config-ProviderConfigClient.get_oidc_provider_config   s3    ";/!!%)?)F)F{)ST!$''r   c	                    [        U5        [        US5      [        US5      S.n	Ub  [        R                  " US5      U	S'   Ub  [        R
                  " US5      U	S'   0 n
USL a  USL a  [        S5      eUb  [        R
                  " US	5      U
S
'   Ub0  [        R
                  " US5      U
S'   U(       a  [        US5      U	S'   U
(       a  XS'   SR                  U5      nU R                  SSXS9n[        U5      $ )z=Creates a new OIDC provider config from the given parameters.r6   r2   )r5   r2   r!   r   r$   F,At least one response type must be returned.r?   r>   rC   rB   r:   r9   r=   zoauthIdpConfigId={0}post/oauthIdpConfigsjsonparams)
r   _validate_non_empty_string_validate_urlr   validate_stringvalidate_boolean
ValueErrorr   r   r/   )r   r   r6   r2   r!   r$   r:   r?   rC   reqresponse_typer   r   s                r   create_oidc_provider_config0ProviderConfigClient.create_oidc_provider_config   s    	#;/29kJ#FH5
 #!,!<!<\>!ZC(99'9MC	N!U*/AU/JKLL!-'2'C'C&(@(BM)$)$/$@$@"$8%:M&!!&@P_&`N#"/'..{;!!&*<3!V!$''r   c	                    [        U5        0 n	Ub4  U[        R                  :X  a  SU	S'   O[        R                  " US5      U	S'   Ub  [        R
                  " US5      U	S'   U(       a  [        US5      U	S'   U(       a  [        US5      U	S'   0 n
USL a  USL a  [        S	5      eUb  [        R
                  " US
5      U
S'   Ub0  [        R
                  " US5      U
S'   U(       a  [        US5      U	S'   U
(       a  XS'   U	(       d  [        S5      e[        R                  " U	5      nSR                  SR                  U5      5      nSR                  U5      nU R                  SXUS9n[        U5      $ )zCUpdates an existing OIDC provider config with the given parameters.Nr   r!   r$   r6   r5   r2   Fr   r?   r>   rC   rB   r:   r9   r=   4At least one parameter must be specified for update.updateMask={0},r   patchr   )r   r   DELETE_ATTRIBUTEr   r   r   r   r   r   build_update_maskr   joinr   r/   )r   r   r6   r2   r!   r$   r:   r?   rC   r   r   update_maskr   urlr   s                  r   update_oidc_provider_config0ProviderConfigClient.update_oidc_provider_config   sv   
 	#;/#y999%)M"%0%@%@~%^M"(99'9MC	N8KPC
O)&(;CM!U*/AU/JKLL!-'2'C'C&(@(BM)$)$/$@$@"$8%:M&!!&@P_&`N#"/STT!33C8!((+)>?$++K8!!'3!H!$''r   c                 \    [        U5        U R                  SSR                  U5      5        g )Ndeleter   )r   r   r   r   r   s     r   delete_oidc_provider_config0ProviderConfigClient.delete_oidc_provider_config  s&    ";/8%;%B%B;%OPr   c                 .    [        U R                  X5      $ r   )r   _fetch_oidc_provider_configsr   ri   rj   s      r   list_oidc_provider_configs/ProviderConfigClient.list_oidc_provider_configs      +--zH 	Hr   c                 &    U R                  SX5      $ )Nr   _fetch_provider_configsr   s      r   r   1ProviderConfigClient._fetch_oidc_provider_configs  s    ++,>
XXr   c                 p    [        U5        U R                  SSR                  U5      5      n[        U5      $ )Nr   /inboundSamlConfigs/{0})_validate_saml_provider_idr   r   rF   r   s      r   get_saml_provider_config-ProviderConfigClient.get_saml_provider_config  s3    ";/!!%)B)I)I+)VW!$''r   c	                 `   [        U5        [        US5      [        US5      [        U5      S.[        US5      [        US5      S.S.n	Ub  [        R
                  " US5      U	S	'   Ub  [        R                  " US
5      U	S
'   SR                  U5      n
U R                  SSXS9n[        U5      $ )z=Creates a new SAML provider config from the given parameters.rK   rO   )rJ   rN   rR   r_   r[   )r^   rZ   )rI   rY   r!   r   r$   zinboundSamlConfigId={0}r   /inboundSamlConfigsr   )
r   r   r   _validate_x509_certificatesr   r   r   r   r   rF   )r   r   rK   rO   rV   r_   r[   r!   r$   r   r   r   s               r   create_saml_provider_config0ProviderConfigClient.create_saml_provider_config  s     	#;/  :-Y';#>?P#Q 9~V,\>J

 #!,!<!<\>!ZC(99'9MC	N*11+>!!&*?c!Y!$''r   c	                    [        U5        0 n	Ub  [        US5      U	S'   Ub  [        US5      U	S'   Ub  [        U5      U	S'   0 n
Ub  [        US5      U
S'   Ub  [        US	5      U
S
'   0 nUb4  U[        R
                  :X  a  SUS'   O[        R                  " US5      US'   Ub  [        R                  " US5      US'   U	(       a  XS'   U
(       a  XS'   U(       d  [        S5      e[        R                  " U5      nSR                  SR                  U5      5      nSR                  U5      nU R                  SXUS9n[        U5      $ )zCUpdates an existing SAML provider config with the given parameters.NrK   rJ   rO   rN   rR   r_   r^   r[   rZ   r   r!   r$   rI   rY   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   )r   r   rK   rO   rV   r_   r[   r!   r$   
idp_config	sp_configr   r   r   r   r   s                   r   update_saml_provider_config0ProviderConfigClient.update_saml_provider_config4  s_    	#;/
$(B=Ra(bJ}%#0)#DJx (,GHY,ZJ()	#&@~&^Il##'4\>'RIm$#y999%)M"%0%@%@~%^M"(99'9MC	N)'
OSTT!33C8!((+)>?'..{;!!'3!H!$''r   c                 \    [        U5        U R                  SSR                  U5      5        g )Nr   r   )r   r   r   r   s     r   delete_saml_provider_config0ProviderConfigClient.delete_saml_provider_config]  s&    ";/8%>%E%Ek%RSr   c                 .    [        U R                  X5      $ r   )r   _fetch_saml_provider_configsr   s      r   list_saml_provider_configs/ProviderConfigClient.list_saml_provider_configsa  r   r   c                 &    U R                  SX5      $ )Nr   r   r   s      r   r   1ProviderConfigClient._fetch_saml_provider_configse  s    ++,A:[[r   c                 j   Ub'  [        U[        5      (       a  U(       d  [        S5      e[        U[        5      (       d  [        S5      eUS:  d
  U[        :  a  [        SR                  [        5      5      eSR                  U5      nU(       a  USR                  U5      -  nU R                  SXS9$ )	z'Fetches a page of auth provider configsz&Page token must be a non-empty string.zMax results must be an integer.   zAMax results must be a positive integer less than or equal to {0}.zpageSize={0}z&pageToken={0}r   )r   )
isinstancestrr   intMAX_LIST_CONFIGS_RESULTSr   r   )r   pathri   rj   r   s        r   r   ,ProviderConfigClient._fetch_provider_configsh  s    !j#..j !IJJ+s++>???k,DDv679 9  &&{3&--j99F!!%!==r   c                     SR                  U R                  U5      n U R                  R                  " X40 UD6$ ! [        R
                  R                   a  n[        R                  " U5      eS nAff = f)Nz{0}{1})	r   r   r   r   requests
exceptionsRequestExceptionr   handle_auth_backend_error)r   methodr   kwargsr   errors         r   r   "ProviderConfigClient._make_requesty  sd    oodmmT2	?##((???""33 	?77>>	?s   ; A4A//A4)r   r   )NN)NNNNN)NNNNNNN)r&   r'   r(   r)   r*   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,   r-   r   r   r   r      s    ;E>( NRPT(B JNEI#((TQ 59F^ H 7;H` Y( DH(4 TXMQ'(RT 59F^ H 7;H` \ 8<Ia >"?r   r   c                     [        U [        5      (       d  [        SR                  U 5      5      eU R	                  S5      (       d  [        SR                  U 5      5      eU $ )NzFInvalid OIDC provider ID: {0}. Provider ID must be a non-empty string.zoidc.zInvalid OIDC provider ID: {0}.r   r   r   r   
startswithr   s    r   r   r     ]    k3''T[[ 	 !!'**9@@MNNr   c                     [        U [        5      (       d  [        SR                  U 5      5      eU R	                  S5      (       d  [        SR                  U 5      5      eU $ )NzFInvalid SAML provider ID: {0}. Provider ID must be a non-empty string.zsaml.zInvalid SAML provider ID: {0}.r   r  s    r   r   r     r  r   c                     [        U [        5      (       d  [        SR                  X5      5      eU (       d  [        SR                  U5      5      eU $ )z5Validates that the given value is a non-empty string.zInvalid type for {0}: {1}.z{0} must not be empty.)r   r   r   r   )valuelabels     r   r   r     sE    eS!!5<<UJKK188?@@Lr   c                 F   [        U [        5      (       a  U (       d  [        SR                  X5      5      e [        R
                  " U 5      nUR                  (       d  [        SR                  X5      5      eU $ ! [         a    [        SR                  X5      5      ef = f)z;Validates that the given value is a well-formed URL string.z9Invalid photo URL: "{0}". {1} must be a non-empty string.zMalformed {0}: "{1}".)r   r   r   r   r   urlparsenetloc	Exception)r   r  parseds      r   r   r     s    c3sfS(* 	*E$}}4;;EGHH
 E077CDDEs   AA; ;%B c           	         [        U [        5      (       a  U (       d  [        S5      e[        U  Vs/ s H  n[        U[        5      =(       a    UPM     sn5      (       d  [        S5      eU  Vs/ s H  nSU0PM	     sn$ s  snf s  snf )Nz+x509_certificates must be a non-empty list.z6x509_certificates must only contain non-empty strings.rS   )r   listr   allr   )rV   certs     r   r   r     s}    '..6GFGG;LM;L4
4%.$.;LMNNQRR2CD2C$%2CDD NDs   #B /B)r*   urllibr   r   firebase_adminr   r   r   r   r/   rF   rb   r   r   PageIteratorr~   r   r   r   r   r   r   r-   r   r   <module>r     s    5   & $  0 0(E E6< <81- 1-h_#: _b#: b3k66 3N? N?bEEr   