U
     d                     @   s~   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	d	d
 Z
dd eje	ji dg D ZdS )    )EmailAddress)app_settings)ProviderAccount)OAuth2Providerc                       s   e Zd Z fddZ  ZS )OpenIDConnectProviderAccountc                    s   t t|  }| jjd|S )Nname)superr   to_strZaccount
extra_dataget)selfZdflt	__class__ {/var/www/html/crackeverytest/cet_env/lib/python3.8/site-packages/allauth/socialaccount/providers/openid_connect/provider.pyr	   	   s    z#OpenIDConnectProviderAccount.to_str)__name__
__module____qualname__r	   __classcell__r   r   r   r   r      s   r   c                       sl   e Zd ZdZdZdZdZeZe	dd Z
e	dd Ze fdd	Zd
d Zdd Zdd Zdd Z  ZS )OpenIDConnectProviderZopenid_connectzOpenID ConnectNc                 C   s    d}| j }||s||7 }|S )Nz!/.well-known/openid-configuration)_server_urlendswith)r   Zwell_known_uriurlr   r   r   
server_url   s
    
z OpenIDConnectProvider.server_urlc                 C   s   t j| ji dS )Ntoken_auth_method)r   	PROVIDERSr   idr   r   r   r   r      s    z'OpenIDConnectProvider.token_auth_methodc                    s   | j pt  S )N)
_server_idr   get_slug)clsr   r   r   r   !   s    zOpenIDConnectProvider.get_slugc                 C   s
   dddgS )NZopenidZprofileemailr   r   r   r   r   get_default_scope%   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   s0   t |d|d|d|d|ddS )Nr!   Zpreferred_usernamer   user_idpicture)r!   usernamer   r(   r)   )dictr   r%   r   r   r   extract_common_fields+   s    z+OpenIDConnectProvider.extract_common_fieldsc                 C   s2   g }| d}|r.|t|| dddd |S )Nr!   Zemail_verifiedFT)r!   ZverifiedZprimary)r   appendr   )r   r&   Z	addressesr!   r   r   r   extract_email_addresses4   s    

z-OpenIDConnectProvider.extract_email_addresses)r   r   r   r   r   r   r   r   Zaccount_classpropertyr   r   classmethodr   r"   r'   r,   r.   r   r   r   r   r   r      s   

	r   c                    sH   G  fdddt }d d  |_tj|ji  tj|j   |S )Nc                       sF   e Zd ZdejZd Zd Zd Zd fdd	Z	  Z
S )z6_provider_factory.<locals>.OpenIDConnectProviderServerr   r   r   Nc                    s   t  j|ddS )NZAPP)config)r   get_appr   )r   requestr1   )r   server_settingsr   r   r2   I   s    z>_provider_factory.<locals>.OpenIDConnectProviderServer.get_app)N)r   r   r   r   r   r   r   r   r   r2   r   r   r4   r   r   OpenIDConnectProviderServerC   s
   r6   ZOpenIDConnectProviderServer_r   )r   r   r   r   
setdefaultr   update)r4   r6   r   r5   r   _provider_factoryB   s    

r9   c                 C   s   g | ]}t |qS r   )r9   ).0r4   r   r   r   
<listcomp>T   s   r;   ZSERVERSN)Zallauth.account.modelsr   Zallauth.socialaccountr   Z$allauth.socialaccount.providers.baser   Z/allauth.socialaccount.providers.oauth2.providerr   r   r   r9   r   r   r   Zprovider_classesr   r   r   r   <module>   s   4 