
    qh(                     X   S r SSKJr  0 SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SSSS.E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,\5      r
 " S- S.\5      r " S/ S0\5      r " S1 S2\5      r " S3 S4\5      r " S5 S6\5      r " S7 S8\5      r " S9 S:\5      r " S; S<\5      r " S= S>\5      r " S? S@\5      r " SA SB\5      r " SC SD\5      r " SE SF\5      r " SG SH\5      rgI)Jz
Backend for OpenID Connect OPs of the German NFDI initiative
https://doc.nfdi-aai.de/

This is conceptually based on the egi_checkin backend
    )OpenIdConnectAuthxcsz6https://keycloak.sso.gwdg.de/auth/realms/academiccloudtextplusmardizhttps://auth.didmos.nfdi-aai.deobjectsculturez https://auth.aai.nfdi4culture.decatz+https://regapp.nfdi-aai.de/oidc/realms/nfdichemdatascienceenergyingmatWerkdaphne!https://login.helmholtz.de/oauth2fairmatimmunopunchz'https://login.helmholtz.de/punch-oauth2	helmholtzinfraproxy-stagingz*https://infraproxy-staging.nfdi-aai.dfn.dez"https://infraproxy.nfdi-aai.dfn.dezhttps://proxy.edu-id.dfn.de )
infraproxyeduideduid-stagingc                   f   ^  \ rS rSr% SrSrSr/ SQr/ SQr/ r	\
\   \S'   S rS	 rU 4S
 jrSrU =r$ )NFDIOpenIdConnect5   r   r   preferred_username))
expires_inr   T)refresh_tokenr   T)id_tokenr    T)	openidprofileemailvoperson_ideduperson_entitlementeduperson_scoped_affiliationvoperson_external_affiliationeduperson_assuranceorcidALLOWED_ENTITLEMENTSc                 >   U R                  SU R                  S9nU R                  UR                  S5      =(       d    SUR                  S5      =(       d    SUR                  S5      =(       d    S5      u  p4nUR                  U5      UR                  S5      UUUS.$ )	NUSERNAME_KEY)defaultnamer   
given_namefamily_namer#   )usernamer#   fullname
first_name	last_name)settingr,   get_user_namesget)selfresponseusername_keyr2   r3   r4   s         K/var/www/html/env/lib/python3.13/site-packages/social_core/backends/nfdi.pyget_user_details"NFDIOpenIdConnect.get_user_detailsR   s    ||ND<M<M|N*.*=*=LL &BLL&,"LL'-2+
'i !\2\\'* $"
 	
    c                 |   ^ SnU R                  SU R                  5      nU(       a  [        U4S jU 5       5      nU$ )NTr*   c              3   ,   >#    U  H	  oT;   v   M     g 7f)N ).0euser_entitlementss     r;   	<genexpr>8NFDIOpenIdConnect.entitlement_allowed.<locals>.<genexpr>e   s     F+Q00+s   )r5   r*   any)r8   rD   allowedallowed_ents    `  r;   entitlement_allowed%NFDIOpenIdConnect.entitlement_alloweda   s7    ll#94;T;TUF+FFGr>   c                    > [         TU ]  X5      nU(       a+  UR                  S5      =(       d    / nU R                  U5      nU$ )zCheck-in promotes the use of eduperson_entitlements for AuthZ, if
ALLOWED_ENTITLEMENTS is defined then use them to allow or not usersr%   )superauth_allowedr7   rJ   )r8   r9   detailsrH   rD   	__class__s        r;   rN   NFDIOpenIdConnect.auth_allowedh   sB     '&x9 (-D E K../@AGr>   rA   )__name__
__module____qualname____firstlineno__r.   OIDC_ENDPOINTr,   
EXTRA_DATADEFAULT_SCOPEr*   liststr__annotations__r<   rJ   rN   __static_attributes____classcell__)rP   s   @r;   r   r   5   sG    D7M (LJ
M  ')$s)(
 r>   r   c                   "    \ rS rSrSr\\   rSrg)XcsOpenIdConnects   r   rA   NrR   rS   rT   rU   r.   NFDI_ENDPOINTSrV   r\   rA   r>   r;   r_   r_   s       D"4(Mr>   r_   c                   "    \ rS rSrSr\\   rSrg)TextplusOpenIdConnectx   r   rA   Nra   rA   r>   r;   re   re   x   s    D"4(Mr>   re   c                   "    \ rS rSrSr\\   rSrg)MardiOpenIdConnect~   r   rA   Nra   rA   r>   r;   rh   rh   ~       D"4(Mr>   rh   c                   "    \ rS rSrSr\\   rSrg)ObjectsOpenIdConnect   r   rA   Nra   rA   r>   r;   rl   rl          D"4(Mr>   rl   c                   "    \ rS rSrSr\\   rSrg)CultureOpenIdConnect   r   rA   Nra   rA   r>   r;   rp   rp      rn   r>   rp   c                   "    \ rS rSrSr\\   rSrg)CatOpenIdConnect   r	   rA   Nra   rA   r>   r;   rs   rs      rc   r>   rs   c                   "    \ rS rSrSr\\   rSrg)ChemOpenIdConnect   r
   rA   Nra   rA   r>   r;   rv   rv      s    D"4(Mr>   rv   c                   "    \ rS rSrSr\\   rSrg)DatascienceOpenIdConnect   r   rA   Nra   rA   r>   r;   ry   ry      s    D"4(Mr>   ry   c                   "    \ rS rSrSr\\   rSrg)EnergyOpenIdConnect   r   rA   Nra   rA   r>   r;   r|   r|          D"4(Mr>   r|   c                   "    \ rS rSrSr\\   rSrg)IngOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      rc   r>   r   c                   "    \ rS rSrSr\\   rSrg)MatWerkOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      rn   r>   r   c                   "    \ rS rSrSr\\   rSrg)DaphneOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      r~   r>   r   c                   "    \ rS rSrSr\\   rSrg)FairmatOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      rn   r>   r   c                   "    \ rS rSrSr\\   rSrg)ImmunoOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      r~   r>   r   c                   "    \ rS rSrSr\\   rSrg)PunchOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      rj   r>   r   c                   "    \ rS rSrSr\\   rSrg)HelmholtzOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      s    D"4(Mr>   r   c                   "    \ rS rSrSr\\   rSrg)InfraproxyStagingOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      s    D"4(Mr>   r   c                   "    \ rS rSrSr\\   rSrg)InfraproxyOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      s    D"4(Mr>   r   c                   "    \ rS rSrSr\\   rSrg)EduidOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      rj   r>   r   c                   "    \ rS rSrSr\\   rSrg)EduidStagingOpenIdConnect   r   rA   Nra   rA   r>   r;   r   r      s    D"4(Mr>   r   N)__doc__$social_core.backends.open_id_connectr   rb   r   r_   re   rh   rl   rp   rs   rv   ry   r|   r   r   r   r   r   r   r   r   r   r   r   rA   r>   r;   <module>r      s   C(	C( H(
 .( 0( 1( 
8( 9( @( ;( 
8( <(  1!(" 2#($ 1%(& 6'(( 4)(, F-(. 7*5(V:) :|)( )
)- ))* )
), )
), ))( )
)) )
)0 )
)+ )
)( )
), ))+ )
), )
)+ )
)* )
). ))%6 )
)/ ))* )
) 1 )r>   