o
    "4g}                     @   s  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 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G dd deZG dd deZG dd deZG dd deZdd ZG dd deZG dd deZdS )    )app_settingsget_adapter)get_authentication_records)flows)LOGIN_SESSION_KEY)Flow)authkit)APIResponsec                       s@   e Zd Zd fdd	Zdd Zdd Zded	dfd
dZ  ZS )BaseAuthenticationResponseNc                    s~   i }|r|j rt }|||d< t||d< |pd}n|pd}|dkr,| |||d< d|o1|j i}t j||||d d S )Nusermethods     r   is_authenticated)datametastatus)r   r   serialize_userr   
_get_flowssuper__init__)selfrequestr   r   r   adapterr   	__class__ g/var/www/html/authentication-server/venv/lib/python3.10/site-packages/allauth/headless/base/response.pyr      s"   



z#BaseAuthenticationResponse.__init__c           
      C   s   t |}g }|r|jr|tj| nEtjs!|	dt
ji tjr,|	dt
ji t |r=tjs=|	dt
ji tjrMddlm} ||| tjr[tjr[|	dt
ji d }| }|rg|j}n|jt}t|trt|}|r|dd}	|r|t
j kr| !||	 | "||	 |S )Nidr   )provider_flowsT)r   
is_pending)#r	   AuthenticationStatusr   extendr   reauthenticationget_reauthentication_flowsallauth_settingsSOCIALACCOUNT_ONLYappendr   LOGINaccount_settingsLOGIN_BY_CODE_ENABLEDLOGIN_BY_CODEget_account_adapteris_open_for_signupSIGNUPSOCIALACCOUNT_ENABLED'allauth.headless.socialaccount.responser    MFA_ENABLEDmfa_settingsPASSKEY_LOGIN_ENABLEDMFA_LOGIN_WEBAUTHNget_pending_stagekeysessiongetr   
isinstancestrMFA_AUTHENTICATE_enrich_mfa_flow_upsert_pending_flow)
r   r   r   auth_statusretr    	stage_keystagelskpending_flowr   r   r   r   $   s@   




z%BaseAuthenticationResponse._get_flowsc                    s8   t  fdd|D d }|r|  d S |  d S )Nc                 3   s$    | ]}|d   d  kr|V  qdS )r   Nr   ).0flowrD   r   r   	<genexpr>L   s   " zBBaseAuthenticationResponse._upsert_pending_flow.<locals>.<genexpr>)nextupdater(   )r   r   rD   rF   r   rG   r   r>   K   s   z/BaseAuthenticationResponse._upsert_pending_flowrF   returnc                 C   sX   ddl m} ddlm} | }g }|jD ]}|j|jj|gdr%|| q||d< d S )Nr   r   )Authenticator)typesrM   )	allauth.mfa.adapterr   allauth.mfa.modelsrL   Typeis_mfa_enabledloginr   r(   )r   rB   rF   get_mfa_adapterrL   r   rM   typr   r   r   r=   R   s   

z+BaseAuthenticationResponse._enrich_mfa_flow)NN)	__name__
__module____qualname__r   r   r>   dictr=   __classcell__r   r   r   r   r      s
    'r   c                          e Zd Z fddZ  ZS )AuthenticationResponsec                    s   t  j||jd d S )N)r   r   r   r   r   r   r   r   r   r   _      zAuthenticationResponse.__init__rU   rV   rW   r   rY   r   r   r   r   r[   ^       r[   c                       rZ   )ReauthenticationResponsec                    s   t  j||jdd d S )Nr   r   r   r\   r]   r   r   r   r   d   s   z!ReauthenticationResponse.__init__r_   r   r   r   r   ra   c   r`   ra   c                       s   e Zd Zd fdd	Z  ZS )UnauthorizedResponser   c                    s   t  j|d |d d S )Nrb   r   r   )r   r   r   r   r   r   r   i   r^   zUnauthorizedResponse.__init__)r   r_   r   r   r   r   rc   h   s    rc   c                       rZ   )ForbiddenResponsec                       t  j|dd d S )Ni  r   rd   r]   r   r   r   r   n      zForbiddenResponse.__init__r_   r   r   r   r   re   m   r`   re   c                       rZ   )ConflictResponsec                    rf   )Ni  rg   rd   r]   r   r   r   r   s   rh   zConflictResponse.__init__r_   r   r   r   r   ri   r   r`   ri   c                 C   s$   t jt | t jt jd}d|iS )N)authentication_methodr.   "email_verification_by_code_enabledlogin_by_code_enabledaccount)r*   AUTHENTICATION_METHODr-   r.   "EMAIL_VERIFICATION_BY_CODE_ENABLEDr+   )r   r   r   r   r   get_config_dataw   s   
rp   c                       rZ   )ConfigResponsec                    sx   t |}tjrddlm } ||| tjr$ddlm } ||| tjr4ddlm } ||| t	 j
||dS )Nr   )rp   )r   )rp   r&   r0   r1   rJ   r2   allauth.headless.mfa.responseUSERSESSIONS_ENABLED&allauth.headless.usersessions.responser   r   )r   r   r   get_socialaccount_config_dataget_mfa_config_dataget_usersessions_config_datar   r   r   r      s   zConfigResponse.__init__r_   r   r   r   r   rq      r`   rq   c                       rZ   )RateLimitResponsec                    rf   )Ni  rg   rd   r]   r   r   r   r      rh   zRateLimitResponse.__init__r_   r   r   r   r   rx      r`   rx   N) allauthr   r&   allauth.accountr*   allauth.account.adapterr   r-   allauth.account.authenticationr   allauth.account.internalr   !allauth.account.internal.stagekitr   allauth.headless.adapterallauth.headless.constantsr   allauth.headless.internalr	   *allauth.headless.internal.restkit.responser
   allauth.mfar3   r   r[   ra   rc   re   ri   rp   rq   rx   r   r   r   r   <module>   s(    P
