
    gU
                     ~    d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ  G d de      Z G d	 d
e	      ZegZy)    )reverse)	urlencode)EmailAddress)ProviderAccount)OAuth2Provider)OpenIDConnectOAuth2Adapterc                       e Zd Zy)OpenIDConnectProviderAccountN)__name__
__module____qualname__     t/var/www/django_project/virt/lib/python3.12/site-packages/allauth/socialaccount/providers/openid_connect/provider.pyr
   r
      s    r   r
   c                   ~     e Zd ZdZdZeZeZ fdZ	e
d        Zd Zd Zd Ze
d        Zd	 Zd
 Zd Zd Zd Z xZS )OpenIDConnectProvideropenid_connectzOpenID Connectc                 Z    t        |   |i | | j                  j                  | _        y N)super__init__appname)selfargskwargs	__class__s      r   r   zOpenIDConnectProvider.__init__   s$    $)&)HHMM	r   c                 V    | j                   j                  d   }| j                  |      S )N
server_url)r   settingswk_server_url)r   urls     r   r   z OpenIDConnectProvider.server_url   s'    hh-!!#&&r   c                     d}d|vr||z  }|S )Nz!/.well-known/openid-configurationz/.well-known/r   )r   r"   well_known_uris      r   r!   z#OpenIDConnectProvider.wk_server_url   s    <#%>!C
r   c                     t        | j                  j                  dz   d| j                  j                  i      }|r|dz   t	        |      z   }|S )N_loginprovider_idr   ?)r   r   providerr'   r   )r   requestr   r"   s       r   get_login_urlz#OpenIDConnectProvider.get_login_url%   sL    HH(-AUAU1V
 )i//C
r   c                 v    t        | j                  j                  dz   d| j                  j                  i      S )N	_callbackr'   r(   )r   r   r*   r'   r   s    r   get_callback_urlz&OpenIDConnectProvider.get_callback_url-   s3    HH+!488#7#78
 	
r   c                 L    | j                   j                  j                  d      S )Ntoken_auth_method)r   r    getr/   s    r   r2   z'OpenIDConnectProvider.token_auth_method3   s    xx  $$%899r   c                 
    g dS )N)openidprofileemailr   r/   s    r   get_default_scopez'OpenIDConnectProvider.get_default_scope7   s    --r   c                     t        |d         S )Nsub)strr   datas     r   extract_uidz!OpenIDConnectProvider.extract_uid:   s    4;r   c                     t        |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d            S )	Nr7   preferred_usernamer   user_idpicturefamily_name
given_name)r7   usernamer   rA   rB   	last_name
first_name)dictr3   r<   s     r   extract_common_fieldsz+OpenIDConnectProvider.extract_common_fields=   sd    ((7#XX23&!HHY'HHY'hh}-xx-
 	
r   c           	          g }|j                  d      }|r-|j                  t        ||j                  dd      d             |S )Nr7   email_verifiedFT)r7   verifiedprimary)r3   appendr   )r   r=   	addressesr7   s       r   extract_email_addressesz-OpenIDConnectProvider.extract_email_addressesH   sK    	!!XX&6>  r   c                 N    | j                  || j                  j                        S r   )oauth2_adapter_classr   r'   )r   r+   s     r   get_oauth2_adapterz(OpenIDConnectProvider.get_oauth2_adapterU   s    (($((2F2FGGr   )r   r   r   idr   r
   account_classr   rR   r   propertyr   r!   r,   r0   r2   r8   r>   rI   rP   rS   __classcell__)r   s   @r   r   r      sn    	BD0M5" ' '
 : :. 	
Hr   r   N)django.urlsr   django.utils.httpr   allauth.account.modelsr   $allauth.socialaccount.providers.baser   /allauth.socialaccount.providers.oauth2.providerr   4allauth.socialaccount.providers.openid_connect.viewsr   r
   r   provider_classesr   r   r   <module>r_      sA     ' / @ J
	? 	FHN FHR ** r   