o
    Lfv	                     @   sf   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)OAuth2Providerc                       s   e Zd Z fddZ  ZS )OpenIDConnectProviderAccountc                    s   t t|  }| jjd|S )Nname)superr   to_straccount
extra_dataget)selfdflt	__class__ x/var/www/html/humari/django-venv/lib/python3.10/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                       sx   e Zd ZdZd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  ZS )OpenIDConnectProvideropenid_connectzOpenID Connectc                    s    t  j|i | | jj| _d S )N)r	   __init__appr   )r   argskwargsr   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}| |s||7 }|S )Nz!/.well-known/openid-configuration)endswith)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   r   r,   r   r   r   r.   1   s   z'OpenIDConnectProvider.token_auth_methodc                 C   s   g dS )N)openidprofileemailr   r,   r   r   r   get_default_scope5   s   z'OpenIDConnectProvider.get_default_scopec                 C   s   t |d S )Nsub)strr   datar   r   r   extract_uid8   s   z!OpenIDConnectProvider.extract_uidc                 C   s0   t |d|d|d|d|ddS )Nr1   preferred_usernamer   user_idpicture)r1   usernamer   r9   r:   )dictr   r5   r   r   r   extract_common_fields;   s   z+OpenIDConnectProvider.extract_common_fieldsc                 C   s2   g }| d}|r|t|| dddd |S )Nr1   email_verifiedFT)r1   verifiedprimary)r   appendr   )r   r6   	addressesr1   r   r   r   extract_email_addressesD   s   

z-OpenIDConnectProvider.extract_email_addresses)r   r   r   idr   r   account_classr   propertyr   r    r*   r-   r.   r2   r7   r=   rC   r   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   r   r   provider_classesr   r   r   r   <module>   s    
C