o
    h                     @   sz   d dl mZ d dlmZ d dlmZ d dlmZmZ ddl	m
Z
mZmZmZmZ G dd deZG d	d
 d
eZegZdS )    )urlparse)reverse)	urlencode)ProviderProviderAccount   )AXAttributeOldAXAttribute	SRegFieldget_email_from_responseget_value_from_responsec                       s$   e Zd Z fddZdd Z  ZS )OpenIDAccountc                    sR   t t|  }t| jjj}i }| D ]\}}| 	|dkr&|} |S q|S )Nr   )
superr   	get_brandr   accountuidnetlocitemslowerfind)selfretdomainprovider_mapdp	__class__ f/var/www/html/pos/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/openid/provider.pyr      s   zOpenIDAccount.get_brandc                 C   s   | j jS N)r   r   )r   r   r   r   to_str   s   zOpenIDAccount.to_str)__name__
__module____qualname__r   r!   __classcell__r   r   r   r   r      s    
r   c                   @   sL   e Zd ZdZdZeZdZdd Zdd Z	dd	 Z
d
d Zdd Zdd ZdS )OpenIDProvideropenidOpenIDFc                 K   s    t d}|r|dt| 7 }|S )Nopenid_login?)r   r   )r   requestkwargsurlr   r   r   get_login_url&   s   zOpenIDProvider.get_login_urlc                 C   s   g }|   d|S )NSERVERS)get_settingsget)r   default_serversr   r   r   
get_brands,   s   zOpenIDProvider.get_brandsc                 C   s>   |   dg }|D ]}|d ur||dr|  S q
i S )Nr/   
openid_url)r0   r1   
startswith)r   endpointserversserverr   r   r   get_server_settings0   s   z"OpenIDProvider.get_server_settingsc                 C   sD   i }|  |jj}|dg }|D ]\}}}t||gd||< q|S )Nextra_attributesax_names)r9   r6   
server_urlr1   r   )r   response
extra_dataserver_settingsr:   attribute_idname_r   r   r   extract_extra_data7   s   z!OpenIDProvider.extract_extra_datac                 C   s   |j S r    )identity_url)r   r>   r   r   r   extract_uidA   s   zOpenIDProvider.extract_uidc                 C   sb   t |tjtjgdpd}t |tjtjgdpd}t |tjgtjtjgdp&d}tt	||||dS )Nr;    )
sreg_namesr<   )email
first_name	last_namerB   )
r   r   PERSON_FIRST_NAMEr	   PERSON_LAST_NAMEr
   NAMEPERSON_NAMEdictr   )r   r>   rJ   rK   rB   r   r   r   extract_common_fieldsD   s:   
z$OpenIDProvider.extract_common_fieldsN)r"   r#   r$   idrB   r   account_class	uses_appsr.   r3   r9   rD   rF   rQ   r   r   r   r   r&       s    
r&   N)urllib.parser   django.urlsr   django.utils.httpr   $allauth.socialaccount.providers.baser   r   utilsr   r	   r
   r   r   r   r&   provider_classesr   r   r   r   <module>   s    	
I