o
    h&                  	   @   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mZ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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$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZB d dlCmDZDmEZEmFZFmGZG d dlHmIZImJZJmKZK d dlLmMZM d dlNmOZO d dlPmQZQ d dlRmSZS d dlTmUZU dZVeedddd ZWG d!d" d"e<e=e9eZXeXY ZZG d#d$ d$e=e:e<e9eZ[e[Y Z\G d%d& d&e[Z]e]Y Z^ee6d'd(G d)d* d*e<e;eZ_e_Y Z`eed'd(eeSd+d,d'd(G d-d. d.e9eZaeaY Zbeed'd(eeSd/d,d'd(G d0d1 d1e9e<eZcecY Zdeed'd(eeSd/d,d'd(G d2d3 d3e9e<eZeeeY Zfee6d'd(G d4d5 d5e<e9eZgegY Zhee6d'd(G d6d7 d7eZieiY ZjeeSd8d,d'd(ee6d'd(G d9d: d:e9e<e;eZkekY Zlee6d'd(G d;d< d<eZmemY ZneeSd8d,d'd(ee6d'd(G d=d> d>e<eZoeoY ZpG d?d@ d@e<eZqeqY ZrG dAdB dBe<e;eZsesY Ztee6d'd(G dCdD dDeZueuY Zvee6d'd(G dEdF dFeZwG dGdH dHeZxee6d'd(dIdJ ZyG dKdL dLe<eZzeed'd(G dMdN dNezZ{e{Y Z|G dOdP dPe=e<eZ}e}Y Z~dQdR Zee7eEje dSd'd(G dTdU dUe<eZeY ZG dVdW dWe<eZee7eGjdXdSd'd(G dYdZ dZeZG d[d\ d\eZee6d'd(d]d^ Zeed'd(eeSd_d,d'd(G d`da daeZeY ZdbS )c    )messages)login_required)get_current_site)PermissionDenied)validate_email)ValidationError)Http404HttpResponseHttpResponseRedirect)reversereverse_lazy)method_decorator)never_cache)sensitive_post_parameters)TemplateView)FormViewapp_settings)get_adapter)AddEmailFormChangePasswordFormChangePhoneForm ConfirmEmailVerificationCodeFormConfirmLoginCodeFormConfirmPasswordResetCodeForm	LoginFormReauthenticateFormRequestLoginCodeFormResetPasswordFormResetPasswordKeyFormSetPasswordForm
SignupFormUserTokenFormVerifyPhoneForm)flows)login_not_requiredlogin_stage_required)AjaxCapableProcessFormViewMixinCloseableSignupMixinLogoutFunctionalityMixinNextRedirectMixinRedirectAuthenticatedUserMixin_ajax_response)EmailAddressEmailConfirmationget_emailconfirmation_model)EmailVerificationStageLoginByCodeStageLoginStageControllerPhoneVerificationStage)send_email_confirmationsync_user_email_addressesuser_display)	ratelimit)ImmediateHttpResponse)redirect)
rate_limit)get_form_class_password_reset_keyoldpasswordpassword	password1	password2c                       sx   e Zd ZeZdej ZdZe	e
dde	eee	e fddZ fddZd	d
 Zdd Z fddZ  ZS )	LoginViewzaccount/login.Nloginactionc                    s0   t jr|jdkrt t j|g|R i |S )NGET)allauth_app_settingsSOCIALACCOUNT_ONLYmethodr   superdispatchselfrequestargskwargs	__class__ P/var/www/html/env_mimamsha/lib/python3.10/site-packages/allauth/account/views.pyrJ   Y   s   zLoginView.dispatchc                    s   t   }| j|d< |S )NrM   )rI   get_form_kwargsrM   rL   rO   rP   rR   rS   rT   b      

zLoginView.get_form_kwargsc                 C      t tjd| jS )NrB   r;   r   FORMS
form_classrL   rR   rR   rS   r;   g      zLoginView.get_form_classc              
   C   sF   |   }z	|j| j|dW S  ty" } z	|jW  Y d }~S d }~ww )N)redirect_url)get_success_urlrB   rM   r8   response)rL   formr]   erR   rR   rS   
form_validj   s   zLoginView.form_validc              	      s   d}t jrddlm} |j}t jdi |}d }t js#| t	d}t
| j}|||t jt jtj|d tjrE| t	d}||d< |S )	NFr   r   account_signup)
signup_urlsiteSOCIALACCOUNT_ENABLEDrG   LOGIN_BY_CODE_ENABLEDPASSKEY_LOGIN_ENABLEDaccount_request_login_coderequest_login_code_urlrR   )rF   MFA_ENABLEDallauth.mfar   rh   rI   get_context_datarG   passthrough_next_urlr   r   rM   updaterf   rg   )rL   rO   passkey_login_enabledmfa_settingsretrd   re   rj   rP   rR   rS   rm   q   s0   

zLoginView.get_context_data)__name__
__module____qualname__r   rZ   r   TEMPLATE_EXTENSIONtemplate_namesuccess_urlr   r:   r%   sensitive_post_parameters_mr   rJ   rT   r;   rb   rm   __classcell__rR   rR   rP   rS   rA   O   s    
rA   c                       st   e Zd Zdej ZeZee	ddee
eee fddZdd Zdd	 Z fd
dZ fddZ  ZS )
SignupViewzaccount/signup.signuprC   c                    s   t  j|g|R i |S N)rI   rJ   rK   rP   rR   rS   rJ      s   zSignupView.dispatchc                 C   rW   )Nr|   rX   r[   rR   rR   rS   r;      r\   zSignupView.get_form_classc              
   C   sj   | | j\| _}|r|S z|  }tjj| j| j||jdW S  ty4 } z	|j	W  Y d }~S d }~ww )N)userr]   
by_passkey)
try_saverM   r~   r^   r$   r|   complete_signupr   r8   r_   )rL   r`   respr]   ra   rR   rR   rS   rb      s   zSignupView.form_validc              
      s   t  jdi |}d}tjrddlm} |j}|d }| jj	d}|r<dg}dtj
v r1|d |D ]}||j| _q3| td}	| td	}
d }|rU| td
}t| j}||	|
||tjtj|d |S )NFr   r   r`   account_verified_emailemailemail2account_loginrc   account_signup_by_passkey)	login_urlrd   signup_by_passkey_urlre   rf   rG   PASSKEY_SIGNUP_ENABLEDrR   )rI   rm   rF   rk   rl   r   r   rM   sessiongetSIGNUP_FIELDSappendfieldsinitialrn   r   r   ro   rf   rG   )rL   rO   rr   passkey_signup_enabledrq   r`   r   
email_keys	email_keyr   rd   r   re   rP   rR   rS   rm      s@   


zSignupView.get_context_datac                    s^   t   }| jjd}|r-zt| W n ty   | Y S w ||d< dtjv r-||d< |S )Nr   r   )	rI   get_initialrM   rE   r   r   r   r   r   )rL   r   r   rP   rR   rS   r      s   

zSignupView.get_initial)rs   rt   ru   r   rv   rw   r!   rZ   r   r:   r%   ry   r   rJ   r;   rb   rm   r   rz   rR   rR   rP   rS   r{      s    
$r{   c                       s&   e Zd Zdej Z fddZ  ZS )SignupByPasskeyViewzaccount/signup_by_passkey.c                    s   t   }d|d< |S )NTr   )rI   rT   rL   rr   rP   rR   rS   rT      s   
z#SignupByPasskeyView.get_form_kwargs)rs   rt   ru   r   rv   rw   rT   rz   rR   rR   rP   rS   r      s    
r   rJ   )namec                       sh   e Zd Zdej Zdd Zdd Zdd Zdd	 Z	dddZ
dd Zdd Z fddZdd Z  ZS )ConfirmEmailViewzaccount/email_confirm.c                 O   s   z|   | _| | j tjr| j|i |W S W n ty%   d | _Y nw |  }| js;t 	| j
r;t }d|_n| |}t| j
||  dS )Ni  data)
get_objectobjectlogout_other_userr   CONFIRM_EMAIL_ON_GETpostr   rm   r   is_ajaxrM   r	   status_coderender_to_responser,   get_ajax_data)rL   rN   rO   ctxr   rR   rR   rS   r      s   


zConfirmEmailView.getc                 C   s0   | j jjr| j jj|jjkr|   dS dS dS )z
        In the event someone clicks on an email confirmation link
        for one account while logged into another account,
        logout of the currently logged in account.
        N)rM   r~   is_authenticatedpkemail_addressuser_idlogout)rL   confirmationrR   rR   rS   r   
  s   z"ConfirmEmailView.logout_other_userc                 O   sN   |    | _}tj| j|\}}|r|S |s| dS | | j | dS )NFT)r   r   r$   email_verificationverify_email_and_resumerM   respondr   )rL   rN   rO   verificationr   r_   rR   rR   rS   r     s   

zConfirmEmailView.postc                 C   s&   |   }|s|  }| |S t|S r}   )get_redirect_urlrm   r   r9   )rL   successr]   r   rR   rR   rS   r   #  s
   
zConfirmEmailView.respondNc                 C   s(   | j d }t }||}|st |S )Nkey)rO   r/   from_keyr   )rL   querysetr   modelemailconfirmationrR   rR   rS   r   *  s   

zConfirmEmailView.get_objectc                 C   s   t j }|d}|S )Nemail_address__user)r.   objects	all_validselect_related)rL   qsrR   rR   rS   get_queryset2  rV   zConfirmEmailView.get_querysetc                 C   s<   dt | ji}| jr| jjj|d< dt| jjji|d< |S )Ncan_confirmr   displayr~   )boolr   r   r   r6   r~   r   rR   rR   rS   r   7  s   
zConfirmEmailView.get_ajax_datac                    sV   t  jdi |}t| j}||| j| jo| jj d | jr)| jjj|d< |S )N)re   r   r   r   rR   )	rI   rm   r   rM   ro   r   r   can_set_verifiedr   )rL   rO   r   re   rP   rR   rS   rm   @  s   

z!ConfirmEmailView.get_context_datac                 C   s$   |   }|st| j| jj}|S r}   )get_next_urlr   rM   #get_email_verification_redirect_urlr   r   rL   urlrR   rR   rS   r   O  s   
z!ConfirmEmailView.get_redirect_urlr}   )rs   rt   ru   r   rv   rw   r   r   r   r   r   r   r   rm   r   rz   rR   rR   rP   rS   r      s    

	r   manage_emailrC   c                       s   e Zd Zejr	dndej ZeZe	dZ
dd Z fddZ fdd	Z fd
dZ fddZdd Zdd Zdd Zdd Z fddZdd Zdd Z  ZS )	EmailViewzaccount/email_change.zaccount/email.account_emailc                 C   rW   )N	add_emailrX   r[   rR   rR   rS   r;   d  r\   zEmailView.get_form_classc                    s*   d| _ t|j t j|g|R i |S )NF)_did_send_verification_emailr5   r~   rI   rJ   rK   rP   rR   rS   rJ   g  s   
zEmailView.dispatchc                    s   t t|  }| jj|d< |S Nr~   )rI   r   rT   rM   r~   rU   rP   rR   rS   rT   l  s   zEmailView.get_form_kwargsc                    s"   t j| j| d| _t |S )NT)r$   r   r   rM   r   rI   rb   rL   r`   rP   rR   rS   rb   q  s   zEmailView.form_validc                    s   d }d|j v rt j|g|R i |}|S |j drOd|j v r'| |}nd|j v r2| |}n
d|j v r<| |}|pCt|  }t	||| 
 d}|S t| j}t	||| 
 d}|S )N
action_addr   action_sendaction_removeaction_primaryr   )POSTrI   r   r   _action_send_action_remove_action_primaryr
   r^   r,   _get_ajax_data_ifrx   )rL   rM   rN   rO   resrP   rR   rS   r   v  s"   





zEmailView.postc                 C   sX   |j d }zt| W n
 ty   Y d S w z
tjj|j|dW S  tjy+   Y d S w )Nr   )r~   r   )r   r   r   r-   r   get_for_userr~   DoesNotExist)rL   rM   r   rR   rR   rS   _get_email_address  s   
zEmailView._get_email_addressc                 O   s>   |  |}|rt| j|j|jd d| _tjrtt	dS d S )N)r   Taccount_email_verification_sent)
r   r4   rM   r~   r   r   r   "EMAIL_VERIFICATION_BY_CODE_ENABLEDr
   r   rL   rM   rN   rO   r   rR   rR   rS   r     s   
zEmailView._action_sendc                 O   0   |  |}|rtj||rt|  S d S d S r}   )r   r$   r   delete_emailr
   r^   r   rR   rR   rS   r        
zEmailView._action_removec                 O   r   r}   )r   r$   r   mark_as_primaryr
   r^   r   rR   rR   rS   r     r   zEmailView._action_primaryc                    s   t t| jdi |}ttjj| jjd	d |
  fddt D |dtj| jjd tjrL|
tj| jjtj| jjd |S )	N)r~   r   c                    s0   g | ]\}}d | |j pt dk|dqS )email_radio_   )idcheckedemailaddress)primarylen).0ir   emailsrR   rS   
<listcomp>  s    z.EmailView.get_context_data.<locals>.<listcomp>r`   )emailaddressesemailaddress_radiosadd_email_formcan_add_email)new_emailaddresscurrent_emailaddressrR   )rI   r   rm   listr-   r   filterrM   r~   order_byro   	enumerater   r   r   CHANGE_EMAILget_newget_verifiedrL   rO   rr   rP   r   rS   rm     s,   
zEmailView.get_context_datac                 C   s>   g }| j jj dD ]}||j|j|j|j	d q|S )Nr   )r   r   verifiedr   )
rM   r~   emailaddress_setallr   r   r   r   r   r   )rL   r   r   rR   rR   rS   r     s   zEmailView.get_ajax_datac                 C   s   | j r
tjr
tdS | jS )Nr   )r   r   r   r   rx   r[   rR   rR   rS   r^     s   zEmailView.get_success_url)rs   rt   ru   r   r   rv   rw   r   rZ   r   rx   r;   rJ   rT   rb   r   r   r   r   r   rm   r   r^   rz   rR   rR   rP   rS   r   [  s$    
r   change_passwordc                       b   e Zd Zdej ZeZdd Ze	 fddZ
 fddZdd	 Z fd
dZ fddZ  ZS )PasswordChangeViewzaccount/password_change.c                 C   rW   )Nr   rX   r[   rR   rR   rS   r;     r\   z!PasswordChangeView.get_form_classc                    s2   | j j sttdS t j|g|R i |S )Naccount_set_passwordrM   r~   has_usable_passwordr
   r   rI   rJ   rK   rP   rR   rS   rJ        zPasswordChangeView.dispatchc                       t   }| jj|d< |S r   rI   rT   rM   r~   rU   rP   rR   rS   rT        
z"PasswordChangeView.get_form_kwargsc                 C      t  | jS r}   r    get_password_change_redirect_urlrM   r[   rR   rR   rS   get_default_success_url     z*PasswordChangeView.get_default_success_urlc                    &   |   tj| j|j t |S r}   )saver$   password_changefinalize_password_changerM   r~   rI   rb   r   rP   rR   rS   rb        zPasswordChangeView.form_validc                    $   t  jdi |}|d|d< |S )Nr`   password_change_formrR   rI   rm   r   r   rP   rR   rS   rm        z#PasswordChangeView.get_context_data)rs   rt   ru   r   rv   rw   r   rZ   r;   ry   rJ   rT   r	  rb   rm   rz   rR   rR   rP   rS   r     s    
r   c                       r   )PasswordSetViewzaccount/password_set.c                 C   rW   )Nset_passwordrX   r[   rR   rR   rS   r;     r\   zPasswordSetView.get_form_classc                    s2   | j j rttdS t j|g|R i |S )Naccount_change_passwordr   rK   rP   rR   rS   rJ     r  zPasswordSetView.dispatchc                    r  r   r  rU   rP   rR   rS   rT      r  zPasswordSetView.get_form_kwargsc                 C   r  r}   r  r[   rR   rR   rS   r	  %  r
  z'PasswordSetView.get_default_success_urlc                    r  r}   )r  r$   r  finalize_password_setrM   r~   rI   rb   r   rP   rR   rS   rb   (  r  zPasswordSetView.form_validc                    r  )Nr`   password_set_formrR   r  r   rP   rR   rS   rm   -  r  z PasswordSetView.get_context_data)rs   rt   ru   r   rv   rw   r    rZ   r;   ry   rJ   rT   r	  rb   rm   rz   rR   rR   rP   rS   r    s    
r  c                       sR   e Zd Zdej ZeZedZ	 fddZ
dd Z fddZ fd	d
Z  ZS )PasswordResetViewzaccount/password_reset.account_reset_password_donec                    s   t jst  S | tdS )N#account_confirm_password_reset_code)r   PASSWORD_RESET_BY_CODE_ENABLEDrI   r^   rn   r   r[   rP   rR   rS   r^   >  s   
z!PasswordResetView.get_success_urlc                 C   rW   )Nreset_passwordrX   r[   rR   rR   rS   r;   C  r\   z PasswordResetView.get_form_classc                    s<   t j| jd|jd  d}|r|S || j t |S )Nr  r   )rD   r   )r7   consume_or_429rM   cleaned_datalowerr  rI   rb   )rL   r`   r429rP   rR   rS   rb   F  s   zPasswordResetView.form_validc                    s@   t  jdi |}| td}|d|d< |d|i |S )Nr   r`   password_reset_formr   rR   )rI   rm   rn   r   r   ro   )rL   rO   rr   r   rP   rR   rS   rm   Q  s
   z"PasswordResetView.get_context_data)rs   rt   ru   r   rv   rw   r   rZ   r   rx   r^   r;   rb   rm   rz   rR   rR   rP   rS   r  8  s    
r  c                   @      e Zd Zdej ZdS )PasswordResetDoneViewzaccount/password_reset_done.Nrs   rt   ru   r   rv   rw   rR   rR   rR   rS   r$  ^      r$  reset_password_from_keyc                       sb   e Zd Zdej ZeZedZ	dZ
dd Z fddZ fdd	Z fd
dZ fddZ  ZS )PasswordResetFromKeyView account/password_reset_from_key.$account_reset_password_from_key_donezset-passwordc                 C   rW   Nr'  rX   r[   rR   rR   rS   r;   s     
z'PasswordResetFromKeyView.get_form_classc           
         s.  || _ || _ttjdt}t |}| j| jks|r^|s&| j j	
td| _||| jdd}| r]|j| _| j jjrP| j jj| jjkrP|   | j| j j	t< t j||| jfi |S n%||| jdd}| r| j| j j	t< | | j j| j| j}t|S d | _| | jdd}	t| j |	|dS )N
user_token uidb36r   r   T)
token_fail)r`   )rM   r   r;   r   rY   r"   r   r   reset_url_keyr   r   INTERNAL_RESET_SESSION_KEYis_valid
reset_userr~   r   r   r   rI   rJ   rn   pathreplacer9   r   rm   r,   )
rL   rM   r0  r   rO   user_token_form_classr   
token_formr]   r_   rP   rR   rS   rJ   x  s:   z!PasswordResetFromKeyView.dispatchc                    s8   t  jdi |}td| jd | jd dd|d< |S )Naccount_reset_password_from_keyr0  r   r/  )rO   
action_urlrR   )rI   rm   r   rO   r   rP   rR   rS   rm     s   
z)PasswordResetFromKeyView.get_context_datac                    s"   t   }| j|d< | j|d< |S )Nr~   temp_key)rI   rT   r5  r   rU   rP   rR   rS   rT     s   


z(PasswordResetFromKeyView.get_form_kwargsc                    s.   |   tj| j| j}|r|S t |S r}   )r  r$   password_resetfinalize_password_resetrM   r5  rI   rb   rL   r`   r   rP   rR   rS   rb     s   z#PasswordResetFromKeyView.form_valid)rs   rt   ru   r   rv   rw   r   rZ   r   rx   r2  r;   rJ   rm   rT   rb   rz   rR   rR   rP   rS   r(  f  s    
,r(  c                   @   r#  )PasswordResetFromKeyDoneViewz%account/password_reset_from_key_done.Nr%  rR   rR   rR   rS   r@    s    r@  c                       s^   e Zd Zdej ZeZedZ	 fddZ
dd Z fddZ fd	d
Z fddZ  ZS )CompletePasswordResetViewr)   account_password_reset_completedc                    sV   t jj|| _| jst| tdS | jj	ds!ttdS t
 j|fi |S )Naccount_reset_passwordcode_confirmedr  )r$   password_reset_by_code PasswordResetVerificationProcessresume_processr
   rn   r   stater   rI   rJ   )rL   rM   rO   rP   rR   rS   rJ     s   z"CompletePasswordResetView.dispatchc                 C   rW   r+  rX   r[   rR   rR   rS   r;     r,  z(CompletePasswordResetView.get_form_classc                    s"   t  jdi |}td|d< |S )Naccount_complete_password_resetr;  rR   )rI   rm   r   r   rP   rR   rS   rm     s   z*CompletePasswordResetView.get_context_datac                    r  r   )rI   rT   rH  r~   rU   rP   rR   rS   rT     r  z)CompletePasswordResetView.get_form_kwargsc                    s&   |   | j }|r|S t |S r}   )r  rH  finishrI   rb   r?  rP   rR   rS   rb     s
   
z$CompletePasswordResetView.form_valid)rs   rt   ru   r   rv   rw   r   rZ   r   rx   rJ   r;   rm   rT   rb   rz   rR   rR   rP   rS   rA    s    
rA  c                       sf   e Zd Zdej ZeZee	 fddZ
dd Z fddZ fdd	Zd
d Z fddZ  ZS )ConfirmPasswordResetCodeViewz$account/confirm_password_reset_code.c                    sV   t jj|| _| jsttdS | jjdrttdS t	 j
|g|R i |S )Nr   rD  rJ  )r$   rE  rF  rG  rH  r
   r   rI  r   rI   rJ   rK   rP   rR   rS   rJ     s   z%ConfirmPasswordResetCodeView.dispatchc                 C   rW   )Nconfirm_password_reset_coderX   r[   rR   rR   rS   r;     r,  z+ConfirmPasswordResetCodeView.get_form_classc                    r  NcoderI   rT   rH  rO  r   rP   rR   rS   rT     r  z,ConfirmPasswordResetCodeView.get_form_kwargsc                    s&   t  jdi |}| jjd |d< |S )Nr   rR   )rI   rm   rH  rI  r   rP   rR   rS   rm     s   z-ConfirmPasswordResetCodeView.get_context_datac                 C   s   | j   t| tdS )NrJ  )rH  confirm_coder
   rn   r   r   rR   rR   rS   rb      s   
z'ConfirmPasswordResetCodeView.form_validc                    sP   | j  }|rt |S t| j}|j| jtj|j	d d t
| tdS Ntoo_many_login_attemptsmessager   )rH  record_invalid_attemptrI   form_invalidr   rM   add_messager   ERRORerror_messagesr
   rn   r   rL   r`   attempts_leftadapterrP   rR   rS   rW  &  s   

z)ConfirmPasswordResetCodeView.form_invalid)rs   rt   ru   r   rv   rw   r   rZ   r   r%   rJ   r;   rT   rm   rb   rW  rz   rR   rR   rP   rS   rL    s    rL  c                   @   s.   e Zd Zdej Zdd Zdd Zdd ZdS )	
LogoutViewzaccount/logout.c                 O   sV   t jr| j|i |S | jjjst|  }t| j|S | 	 }| 
|}t| j|S r}   )r   LOGOUT_ON_GETr   rM   r~   r   r9   r   r,   rm   r   )rL   rN   rO   r_   r   rR   rR   rS   r   9  s   

zLogoutView.getc                 O   s$   |   }|   t|}t| j|S r}   )r   r   r9   r,   rM   )rL   rN   rO   r   r_   rR   rR   rS   r   C  s   zLogoutView.postc                 C   s   |   pt| j| jS r}   )r   r   rM   get_logout_redirect_urlr[   rR   rR   rS   r   I  s   zLogoutView.get_redirect_urlN)	rs   rt   ru   r   rv   rw   r   r   r   rR   rR   rR   rS   r^  6  s
    

r^  c                   @   r#  )AccountInactiveViewzaccount/account_inactive.Nr%  rR   rR   rR   rS   ra  R  r&  ra  c                   @   r#  )EmailVerificationSentViewzaccount/verification_sent.Nr%  rR   rR   rR   rS   rb  Z  r&  rb  c                       s^   e Zd Zdej ZeZ fddZdd Z	 fddZ
 fdd	Zd
d Z fddZ  ZS ) ConfirmEmailVerificationCodeViewz(account/confirm_email_verification_code.c                    s   t |tj| _tjj|| _	| j	od| j	j
v}| j	r%|jjr3| js3|s3tt|jjr/dS dS t j|g|R i |S )Nr   r   r   )r2   enterr0   r   stager$   email_verification_by_codeEmailVerificationProcessrG  rH  rI  r~   is_anonymousr
   r   rI   rJ   )rL   rM   rN   rO   verification_is_fakerP   rR   rS   rJ   e  s*   	
z)ConfirmEmailVerificationCodeView.dispatchc                 C   rW   )Nconfirm_email_verification_coderX   r[   rR   rR   rS   r;   }  r,  z/ConfirmEmailVerificationCodeView.get_form_classc                    s$   t   }| jr| jjnd|d< |S )Nr.  rO  rP  r   rP   rR   rS   rT     s   
z0ConfirmEmailVerificationCodeView.get_form_kwargsc                    s<   t  jdi |}| jjd |d< | jrd ntd|d< |S )Nr   r   
cancel_urlrR   )rI   rm   rH  rI  re  r   r   rP   rR   rS   rm     s   z1ConfirmEmailVerificationCodeView.get_context_datac                 C   sT   | j  }| jr|s| j S | j S |std}t	|S t| j|}t	|S )Nr   )
rH  rK  re  abortexitr   r   rM   r   r
   )rL   r`   r   r   rR   rR   rS   rb     s   



z+ConfirmEmailVerificationCodeView.form_validc                    sJ   | j  }|rt |S t| j}|j| jtj|j	d d t
tdS rR  )rH  rV  rI   rW  r   rM   rX  r   rY  rZ  r
   r   r[  rP   rR   rS   rW    s   

z-ConfirmEmailVerificationCodeView.form_invalid)rs   rt   ru   r   rv   rw   r   rZ   rJ   r;   rT   rm   rb   rW  rz   rR   rR   rP   rS   rc  _  s    rc  c                 C   s   t jr	t | S t | S r}   )r   r   rc  as_viewrb  rM   rR   rR   rS   email_verification_sent  s   rp  c                       sT   e Zd Z fddZdd Zdd Zdd Z fd	d
Z fddZdd Z	  Z
S )BaseReauthenticateViewc                    s>   |  |}|r	|S | |}|r|S t j|g|R i |S r}   )(_check_reauthentication_method_available_check_ratelimitrI   rJ   )rL   rM   rN   rO   r   rP   rR   rS   rJ     s   

zBaseReauthenticateView.dispatchc                 C   s   t j| jd| jjdS )Nreauthenticate)rD   r~   )r7   r  rM   r~   )rL   rM   rR   rR   rS   rs    s
   z'BaseReauthenticateView._check_ratelimitc                    sP   t  | jj}t fdd|D rd S |std| |d d }t|S )Nc                    s   g | ]	}|d   j kqS )r   )r6  )r   mro  rR   rS   r     s    zSBaseReauthenticateView._check_reauthentication_method_available.<locals>.<listcomp>zReauthentication not availabler   r   )r   get_reauthentication_methodsrM   r~   anyr   rn   r
   )rL   rM   methodsr   rR   ro  rS   rr    s   z?BaseReauthenticateView._check_reauthentication_method_availablec                 C   s   t | j| j}|S r}   )r   rM   get_login_redirect_urlr   rR   rR   rS   r	    s   z.BaseReauthenticateView.get_default_success_urlc                    s"   t j| j}|r|S t |S r}   )r$   reauthenticationresume_requestrM   rI   rb   )rL   r`   r_   rP   rR   rS   rb     s   z!BaseReauthenticateView.form_validc                    s(   t  jdi |}|d|  i |S )Nreauthentication_alternativesrR   )rI   rm   ro   !get_reauthentication_alternativesr   rP   rR   rS   rm     s   z'BaseReauthenticateView.get_context_datac                 C   sh   t  | jj}g }|D ]}t|}| jj|d krq| |d |d< || qt|dd d}|S )Nr   c                 S   s   | d S )NdescriptionrR   )altrR   rR   rS   <lambda>  s    zJBaseReauthenticateView.get_reauthentication_alternatives.<locals>.<lambda>)r   )	r   rv  rM   r~   dictr6  rn   r   sorted)rL   rx  altsrH   r  rR   rR   rS   r}    s   z8BaseReauthenticateView.get_reauthentication_alternatives)rs   rt   ru   rJ   rs  rr  r	  rb   rm   r}  rz   rR   rR   rP   rS   rq    s    		rq  c                       s>   e Zd ZeZdej Zdd Z fddZ	 fddZ
  ZS )ReauthenticateViewzaccount/reauthenticate.c                 C   rW   )Nrt  rX   r[   rR   rR   rS   r;     r\   z!ReauthenticateView.get_form_classc                    r  r   r  r   rP   rR   rS   rT     r  z"ReauthenticateView.get_form_kwargsc                    s   t j| j t |S r}   )r$   rz  reauthenticate_by_passwordrM   rI   rb   r   rP   rR   rS   rb     s   zReauthenticateView.form_valid)rs   rt   ru   r   rZ   r   rv   rw   r;   rT   rb   rz   rR   rR   rP   rS   r    s    
r  c                       sF   e Zd ZeZdej Zdd Z fddZ	dd Z
 fdd	Z  ZS )
RequestLoginCodeViewzaccount/request_login_code.c                 C   rW   )Nrequest_login_coderX   r[   rR   rR   rS   r;     r\   z#RequestLoginCodeView.get_form_classc                    s6   t jjj| j|j|jd|jdd t 	|S )Nr   phone)rM   r~   r   r  )
r$   login_by_codeLoginCodeVerificationProcessinitiaterM   _userr  r   rI   rb   r   rP   rR   rS   rb     s   

zRequestLoginCodeView.form_validc                 C   s(   | j jjrd S td}| td}|S )Naccount_confirm_login_code)rM   r~   r   r   rn   r   r   rR   rR   rS   r^     s
   
z$RequestLoginCodeView.get_success_urlc                    s.   t  jdi |}t| j}|d|i |S )Nre   rR   )rI   rm   r   rM   ro   rL   rO   rr   re   rP   rR   rS   rm     s   
z%RequestLoginCodeView.get_context_data)rs   rt   ru   r   rZ   r   rv   rw   r;   rb   r^   rm   rz   rR   rR   rP   rS   r    s    
	r  c                   C   s   t jrdS dS )Nri   r   )r   rg   rR   rR   rR   rS   _login_by_code_urlname"  s
   r  )re  redirect_urlnamec                       sf   e Zd ZeZdej Zee	 fddZ
dd Z fddZdd	 Z fd
dZ fddZ  ZS )ConfirmLoginCodeViewzaccount/confirm_login_code.c                    sH   |j | _tjj| j| _| jsttt	 S t
 j|g|R i |S r}   )_login_stagere  r$   r  r  rG  rH  r
   r   r  rI   rJ   rK   rP   rR   rS   rJ   6  s   zConfirmLoginCodeView.dispatchc                 C   rW   )Nconfirm_login_coderX   r[   rR   rR   rS   r;   @  r\   z#ConfirmLoginCodeView.get_form_classc                    r  rN  rP  rU   rP   rR   rS   rT   C  r  z$ConfirmLoginCodeView.get_form_kwargsc                 C   s   |   }| j|S r}   )r   rH  rK  )rL   r`   r]   rR   rR   rS   rb   H  s   zConfirmLoginCodeView.form_validc                    s`   | j  }|rt |S t| j}|j| jtj|j	d d t
t| j jd r,t S dS )NrS  rT  initiated_by_userr   )rH  rV  rI   rW  r   rM   rX  r   rY  rZ  r
   r   rI  r  r[  rP   rR   rS   rW  L  s$   


z!ConfirmLoginCodeView.form_invalidc                    sN   t  jdi |}t| j}| jjd}| jjd}||||d |S )Nr   r  )re   r   r  rR   )rI   rm   r   rM   rH  rI  r   ro   )rL   rO   rr   re   r   r  rP   rR   rS   rm   ^  s   
z%ConfirmLoginCodeView.get_context_data)rs   rt   ru   r   rZ   r   rv   rw   r   r   rJ   r;   rT   rb   rW  rm   rz   rR   rR   rP   rS   r  ,  s    
	r  c                       sR   e Zd ZeZdej Zdd Z fddZ	dd Z
 fdd	Z fd
dZ  ZS )_BaseVerifyPhoneViewz(account/confirm_phone_verification_code.c                 C   rW   )Nverify_phonerX   r[   rR   rR   rS   r;   v  r\   z#_BaseVerifyPhoneView.get_form_classc                    r  rN  )rI   rT   processrO  rU   rP   rR   rS   rT   y  r  z$_BaseVerifyPhoneView.get_form_kwargsc                 C   s   | j   | |S r}   )r  rK  respond_process_succeededr   rR   rR   rS   rb   ~  s   

z_BaseVerifyPhoneView.form_validc                    s.   | j  }|rt |S | j   | |S r}   )r  rV  rI   rW  rl  respond_process_failed)rL   r`   r\  rP   rR   rS   rW    s
   


z!_BaseVerifyPhoneView.form_invalidc                    s4   t  jdi |}t| j}||| jjd |S )N)re   r  rR   )rI   rm   r   rM   ro   r  r  r  rP   rR   rS   rm     s   
z%_BaseVerifyPhoneView.get_context_data)rs   rt   ru   r#   rZ   r   rv   rw   r;   rT   rb   rW  rm   rz   rR   rR   rP   rS   r  p  s    r  r   c                       s4   e Zd Zee fddZdd Zdd Z  ZS )_VerifyPhoneSignupViewc                    sD   |j | _tjj| j| _| js| j S t j	|g|R i |S r}   )
r  re  r$   phone_verificationPhoneVerificationStageProcessrG  r  rl  rI   rJ   rK   rP   rR   rS   rJ     s   
z_VerifyPhoneSignupView.dispatchc                 C   s
   | j  S r}   )re  rm  r   rR   rR   rS   r    s   
z0_VerifyPhoneSignupView.respond_process_succeededc                 C   s.   t | j}|j| jtj|jd d | j S )NrS  rT  )r   rM   rX  r   rY  rZ  re  rl  )rL   r`   r]  rR   rR   rS   r    s   

z-_VerifyPhoneSignupView.respond_process_failed)	rs   rt   ru   r   r   rJ   r  r  rz   rR   rR   rP   rS   r    s
    	r  c                       s@   e Zd Zee fddZdd Zdd Z fddZ  Z	S )	_VerifyPhoneChangeViewc                    s<   t jj|| _| jsttdS t j|g|R i |S Naccount_change_phone)	r$   r  ChangePhoneVerificationProcessrG  r  r
   r   rI   rJ   rK   rP   rR   rS   rJ     s   z_VerifyPhoneChangeView.dispatchc                 C      t tdS r  r
   r   r   rR   rR   rS   r       z0_VerifyPhoneChangeView.respond_process_succeededc                 C   r  r  r  r   rR   rR   rS   r    r  z-_VerifyPhoneChangeView.respond_process_failedc                    s(   t  jdi |}|dtdi |S )Nrk  r  rR   )rI   rm   ro   r   r   rP   rR   rS   rm     s   z'_VerifyPhoneChangeView.get_context_data)
rs   rt   ru   r   r   rJ   r  r  rm   rz   rR   rR   rP   rS   r    s    r  c                 C   s    | j jr
t | S t | S r}   )r~   r   r  rn  r  ro  rR   rR   rS   r    s   r  change_phonec                       sR   e Zd Zdej ZeZedZ	dd Z
 fddZ fddZ fd	d
Z  ZS )ChangePhoneViewzaccount/phone_change.account_verify_phonec                 C   rW   )Nr  rX   r[   rR   rR   rS   r;     r\   zChangePhoneView.get_form_classc                    sx   t   }t | jj| _| jjddkr.| jr.| jd s.d| jd i|d< d |d< |S | jr6| jd nd |d< |S )NrD   verifyr   r  r   r   )	rI   rT   r   	get_phonerM   r~   _phone_verifiedr   r   r   rP   rR   rS   rT     s   
zChangePhoneView.get_form_kwargsc                    s$   t jj| j|jd  t |S )Nr  )r$   r  r  r  rM   r  rI   rb   r   rP   rR   rS   rb     s   zChangePhoneView.form_validc                    s>   t  jdi |}d }d}| jr| j\}}|||d |S )NF)r  phone_verifiedrR   )rI   rm   r  ro   )rL   rO   rr   r  r  rP   rR   rS   rm     s   
z ChangePhoneView.get_context_data)rs   rt   ru   r   rv   rw   r   rZ   r   rx   r;   rT   rb   rm   rz   rR   rR   rP   rS   r    s    
r  N)django.contribr   django.contrib.auth.decoratorsr   django.contrib.sites.shortcutsr   django.core.exceptionsr   django.core.validatorsr   django.formsr   django.httpr   r	   r
   django.urlsr   r   django.utils.decoratorsr   django.views.decorators.cacher   django.views.decorators.debugr   django.views.generic.baser   django.views.generic.editr   allauthr   rF   allauth.accountallauth.account.adapterr   allauth.account.formsr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   allauth.account.internalr$   #allauth.account.internal.decoratorsr%   r&   allauth.account.mixinsr'   r(   r)   r*   r+   r,   allauth.account.modelsr-   r.   r/   allauth.account.stagesr0   r1   r2   r3   allauth.account.utilsr4   r5   r6   allauth.corer7   allauth.core.exceptionsr8   allauth.core.internal.httpkitr9   allauth.decoratorsr:   allauth.utilsr;   r3  ry   rA   rn  rB   r{   r|   r   signup_by_passkeyr   confirm_emailr   r   r   r  r  password_setr  r=  r$  password_reset_doner(  password_reset_from_keyr@  password_reset_from_key_donerA  complete_password_resetrL  rM  r^  r   ra  account_inactiverb  rc  rp  rq  r  rt  r  r  r  r   r  r  r  r  r  r  r  r  rR   rR   rR   rS   <module>   s   D 
@
U	
a
 
"
"
"


W


-5


I

<
;%


-