o
    "4g)                     @   s   d dl mZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ dd Zdd	 Zd
d Zdd Zdd Zdd ZG dd deZdS )    )APIResponse)ClientFlow)get_adapter)signup)OAuth2Providerc                 C   sV   |j |jg d}|jr|d tj |jr|d tj t|t	r)|j
j|d< |S )N)idnameflowsr
   	client_id)sub_idr	   supports_redirectappendr   PROVIDER_REDIRECTsupports_token_authenticationPROVIDER_TOKEN
isinstancer   appr   )requestproviderret r   p/var/www/html/authentication-server/venv/lib/python3.10/site-packages/allauth/headless/socialaccount/response.py_provider_data
   s   
r   c                 C   s   g }t | }|rCdd |D }dd |D }|r)| jjjtjkr)|tj|d |r4|tj	|d t
| }|rC|t| | |S )Nc                 S      g | ]}|j r|jqS r   )r   r   .0pr   r   r   
<listcomp>       z"provider_flows.<locals>.<listcomp>c                 S   r   r   )r   r   r   r   r   r   r      r   )r   	providers)_list_supported_providersallauthheadlessclientr   BROWSERr   r   r   r   r   get_pending_signup_signup_flow)r   r
   r    redirect_providerstoken_providerssocialloginr   r   r   provider_flows   s*   
r+   c                 C   s"   |j  }tjt| |dd}|S )NT)r   r   
is_pending)accountget_providerr   PROVIDER_SIGNUPr   )r   r*   r   flowr   r   r   r'   0   s   
r'   c                 C   s$   |t jkr| jS |t jkr| jS dS )NF)r   APPr   r%   r   )r   r$   r   r   r   _is_provider_supported:   s
   

r2   c                    s&   t  }| } fdd|D }|S )Nc                    s    g | ]}t | jjjr|qS r   )r2   r"   r#   r$   r   r   r   r   r   E   s    z-_list_supported_providers.<locals>.<listcomp>)get_socialaccount_adapterlist_providers)r   adapterr    r   r3   r   r!   B   s   

r!   c                 C   sF   g }dd|ii}t | }t|dd d}|D ]
}|t| | q|S )Nsocialaccountr    c                 S   s   | j S )N)r	   )r   r   r   r   <lambda>Q   s    z!get_config_data.<locals>.<lambda>)key)r!   sortedr   r   )r   entriesdatar    r   r   r   r   get_config_dataM   s   r=   c                       s   e Zd Z fddZ  ZS )SocialAccountsResponsec                    s&    fdd|D }t  j |d d S )Nc                    s,   g | ]}|j t | |  d qS ))uidr   display)r?   r   r.   get_provider_accountto_str)r   r-   r3   r   r   r   Y   s    
z3SocialAccountsResponse.__init__.<locals>.<listcomp>)r<   )super__init__)selfr   accountsr<   	__class__r3   r   rD   X   s   
zSocialAccountsResponse.__init__)__name__
__module____qualname__rD   __classcell__r   r   rG   r   r>   W   s    r>   N)allauth.headless.base.responser   allauth.headless.constantsr   r   allauth.socialaccount.adapterr   r4   $allauth.socialaccount.internal.flowsr   /allauth.socialaccount.providers.oauth2.providerr   r   r+   r'   r2   r!   r=   r>   r   r   r   r   <module>   s    

