o
    "4gU
                     @   sr   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 deZG d	d
 d
e	ZegZdS )    )reverse)	urlencode)EmailAddress)ProviderAccount)OAuth2Provider)OpenIDConnectOAuth2Adapterc                   @   s   e Zd ZdS )OpenIDConnectProviderAccountN)__name__
__module____qualname__ r   r   /var/www/html/authentication-server/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/openid_connect/provider.pyr      s    r   c                       s   e Zd ZdZdZeZeZ fddZ	e
dd Zdd Zd	d
 Zdd Ze
dd Zdd Zdd Zdd Zdd Zdd Z  ZS )OpenIDConnectProvideropenid_connectzOpenID Connectc                    s    t  j|i | | jj| _d S N)super__init__appname)selfargskwargs	__class__r   r   r      s   zOpenIDConnectProvider.__init__c                 C   s   | j jd }| |S )N
server_url)r   settingswk_server_url)r   urlr   r   r   r      s   
z OpenIDConnectProvider.server_urlc                 C   s   d}d|vr
||7 }|S )Nz!/.well-known/openid-configurationz/.well-known/r   )r   r   well_known_urir   r   r   r      s   z#OpenIDConnectProvider.wk_server_urlc                 K   s4   t | jjd d| jjid}|r|d t| }|S )N_loginprovider_idr   ?)r   r   providerr    r   )r   requestr   r   r   r   r   get_login_url%   s   z#OpenIDConnectProvider.get_login_urlc                 C   s   t | jjd d| jjidS )N	_callbackr    r!   )r   r   r#   r    r   r   r   r   get_callback_url-   s   

z&OpenIDConnectProvider.get_callback_urlc                 C   s   | j jdS )Ntoken_auth_method)r   r   getr'   r   r   r   r)   3   s   z'OpenIDConnectProvider.token_auth_methodc                 C   s   g dS )N)openidprofileemailr   r'   r   r   r   get_default_scope7   s   z'OpenIDConnectProvider.get_default_scopec                 C   s   t |d S )Nsub)strr   datar   r   r   extract_uid:   s   z!OpenIDConnectProvider.extract_uidc              
   C   s@   t |d|d|d|d|d|d|ddS )	Nr-   preferred_usernamer   user_idpicturefamily_name
given_name)r-   usernamer   r5   r6   	last_name
first_name)dictr*   r1   r   r   r   extract_common_fields=   s   z+OpenIDConnectProvider.extract_common_fieldsc                 C   s2   g }| d}|r|t|| dddd |S )Nr-   email_verifiedFT)r-   verifiedprimary)r*   appendr   )r   r2   	addressesr-   r   r   r   extract_email_addressesH   s   

z-OpenIDConnectProvider.extract_email_addressesc                 C   s   |  || jjS r   )oauth2_adapter_classr   r    )r   r$   r   r   r   get_oauth2_adapterU   s   z(OpenIDConnectProvider.get_oauth2_adapter)r	   r
   r   idr   r   account_classr   rD   r   propertyr   r   r%   r(   r)   r.   r3   r=   rC   rE   __classcell__r   r   r   r   r      s$    

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   r   <module>   s    
I