o
    "4gR                  	   @   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/ d dl0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; d dl<m=Z=m>Z>m?Z? d dl@mAZAmBZBmCZC d dlDmEZEmFZFmGZGmHZH d dlImJZJ d dlKmLZL d dlMmNZN d dlOmPZP d dlQmRZR dZSeedddd ZTG d!d" d"e9e:e6eZUeUV ZWG d#d$ d$e:e7e9e6eZXeXV ZYG d%d& d&eXZZeZV Z[ee3d'd(G d)d* d*e9e8eZ\e\V Z]eed'd(eePd+d,d'd(G d-d. d.e6eZ^e^V Z_eed'd(eePd/d,d'd(G d0d1 d1e6e9eZ`e`V Zaeed'd(eePd/d,d'd(G d2d3 d3e6e9eZbebV Zcee3d'd(G d4d5 d5e9e6eZdedV Zeee3d'd(G d6d7 d7eZfefV ZgeePd8d,d'd(ee3d'd(G d9d: d:e6e9e8eZhehV Ziee3d'd(G d;d< d<eZjejV ZkG d=d> d>e9e8eZlelV Zmee3d'd(G d?d@ d@eZnenV Zoee3d'd(G dAdB dBeZpG dCdD dDeZqee3d'd(dEdF ZrG dGdH dHe9eZseed'd(G dIdJ dJesZtetV ZuG dKdL dLe:e9eZvevV ZwdMdN Zxee4eBjyex dOd'd(G dPdQ dQe9eZzezV Z{dRS )S    )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 ConfirmEmailVerificationCodeFormConfirmLoginCodeForm	LoginFormReauthenticateFormRequestLoginCodeFormResetPasswordFormResetPasswordKeyFormSetPasswordForm
SignupFormUserTokenForm)flows)login_not_requiredlogin_stage_required)AjaxCapableProcessFormViewMixinCloseableSignupMixinLogoutFunctionalityMixinNextRedirectMixinRedirectAuthenticatedUserMixin_ajax_response)EmailAddressEmailConfirmationget_emailconfirmation_model)EmailVerificationStageLoginByCodeStageLoginStageController)perform_login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__ ^/var/www/html/authentication-server/venv/lib/python3.10/site-packages/allauth/account/views.pyrG   V   s   zLoginView.dispatchc                    s   t   }| j|d< |S )NrJ   )rF   get_form_kwargsrJ   rI   rL   rM   rO   rP   rQ   _      

zLoginView.get_form_kwargsc                 C      t tjd| jS )Nr?   r8   r   FORMS
form_classrI   rO   rO   rP   r8   d      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_urlr?   rJ   r5   response)rI   formrZ   erO   rO   rP   
form_validg   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_ENABLEDrD   LOGIN_BY_CODE_ENABLEDPASSKEY_LOGIN_ENABLEDaccount_request_login_coderequest_login_code_urlrO   )rC   MFA_ENABLEDallauth.mfar   re   rF   get_context_datarD   passthrough_next_urlr   r   rJ   updaterc   rd   )rI   rL   passkey_login_enabledmfa_settingsretra   rb   rg   rM   rO   rP   rj   n   s0   

zLoginView.get_context_data)__name__
__module____qualname__r   rW   r   TEMPLATE_EXTENSIONtemplate_namesuccess_urlr   r7   r"   sensitive_post_parameters_mr   rG   rQ   r8   r_   rj   __classcell__rO   rO   rM   rP   r>   L   s    
r>   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.signupr@   c                    s   t  j|g|R i |S N)rF   rG   rH   rM   rO   rP   rG      s   zSignupView.dispatchc                 C   rT   )Nry   rU   rX   rO   rO   rP   r8      rY   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)userrZ   
by_passkey)
try_saverJ   r{   r[   r!   ry   complete_signupr|   r5   r\   )rI   r]   resprZ   r^   rO   rO   rP   r_      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}tj
r/|d |D ]}||j| _q1| td}	| td	}
d }|rS| td
}t| j}||	|
||tjtj|d |S )NFr   r   r]   account_verified_emailemailemail2account_loginr`   account_signup_by_passkey)	login_urlra   signup_by_passkey_urlrb   rc   rD   PASSKEY_SIGNUP_ENABLEDrO   )rF   rj   rC   rh   ri   r   r   rJ   sessiongetSIGNUP_EMAIL_ENTER_TWICEappendfieldsinitialrk   r   r   rl   rc   rD   )rI   rL   ro   passkey_signup_enabledrn   r]   r   
email_keys	email_keyr   ra   r   rb   rM   rO   rP   rj      s@   

zSignupView.get_context_datac                    sZ   t   }| jjd}|r+zt| W n ty   | Y S w ||d< tjr+||d< |S )Nr   r   )	rF   get_initialrJ   rB   r   r   r   r   r   )rI   r   r   rM   rO   rP   r      s   
zSignupView.get_initial)rp   rq   rr   r   rs   rt   r   rW   r   r7   r"   rv   r   rG   r8   r_   rj   r   rw   rO   rO   rM   rP   rx      s    
$rx   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|   )rF   rQ   rI   ro   rM   rO   rP   rQ      s   
z#SignupByPasskeyView.get_form_kwargs)rp   rq   rr   r   rs   rt   rQ   rw   rO   rO   rM   rP   r      s    
r   rG   )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   rj   r   is_ajaxrJ   r	   status_coderender_to_responser)   get_ajax_data)rI   rK   rL   ctxr   rO   rO   rP   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)rJ   r{   is_authenticatedpkemail_addressuser_idlogout)rI   confirmationrO   rO   rP   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_resumerJ   respondr   )rI   rK   rL   verificationr   r\   rO   rO   rP   r     s   

zConfirmEmailView.postc                 C   s&   |   }|s|  }| |S t|S rz   )get_redirect_urlrj   r   r6   )rI   successrZ   r   rO   rO   rP   r      s
   
zConfirmEmailView.respondNc                 C   s(   | j d }t }||}|st |S )Nkey)rL   r,   from_keyr   )rI   querysetr   modelemailconfirmationrO   rO   rP   r   '  s   

zConfirmEmailView.get_objectc                 C   s   t j }|d}|S )Nemail_address__user)r+   objects	all_validselect_related)rI   qsrO   rO   rP   get_queryset/  rS   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   r3   r{   r   rO   rO   rP   r   4  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)rb   r   r   r   rO   )	rF   rj   r   rJ   rl   r   r   can_set_verifiedr   )rI   rL   r   rb   rM   rO   rP   rj   =  s   

z!ConfirmEmailView.get_context_datac                 C   s$   |   }|st| j| jj}|S rz   )get_next_urlr   rJ   #get_email_verification_redirect_urlr   r   rI   urlrO   rO   rP   r   L  s   
z!ConfirmEmailView.get_redirect_urlrz   )rp   rq   rr   r   rs   rt   r   r   r   r   r   r   r   rj   r   rw   rO   rO   rM   rP   r      s    

	r   manage_emailr@   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   rT   )N	add_emailrU   rX   rO   rO   rP   r8   a  rY   zEmailView.get_form_classc                    s*   d| _ t|j t j|g|R i |S )NF)_did_send_verification_emailr2   r{   rF   rG   rH   rM   rO   rP   rG   d  s   
zEmailView.dispatchc                    s   t t|  }| jj|d< |S Nr{   )rF   r   rQ   rJ   r{   rR   rM   rO   rP   rQ   i  s   zEmailView.get_form_kwargsc                    s"   t j| j| d| _t |S )NT)r!   r   r   rJ   r   rF   r_   rI   r]   rM   rO   rP   r_   n  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   )POSTrF   r   r   _action_send_action_remove_action_primaryr
   r[   r)   _get_ajax_data_ifru   )rI   rJ   rK   rL   resrM   rO   rP   r   s  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)rI   rJ   r   rO   rO   rP   _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   r1   rJ   r{   r   r   r   "EMAIL_VERIFICATION_BY_CODE_ENABLEDr
   r   rI   rJ   rK   rL   r   rO   rO   rP   r     s   
zEmailView._action_sendc                 O   0   |  |}|rtj||rt|  S d S d S rz   )r   r!   r   delete_emailr
   r[   r   rO   rO   rP   r        
zEmailView._action_removec                 O   r   rz   )r   r!   r   mark_as_primaryr
   r[   r   rO   rO   rP   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   emailsrO   rP   
<listcomp>  s    z.EmailView.get_context_data.<locals>.<listcomp>r]   )emailaddressesemailaddress_radiosadd_email_formcan_add_email)new_emailaddresscurrent_emailaddressrO   )rF   r   rj   listr*   r   filterrJ   r{   order_byrl   	enumerater   r   r   CHANGE_EMAILget_newget_verifiedrI   rL   ro   rM   r   rP   rj     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   )
rJ   r{   emailaddress_setallr   r   r   r   r   r   )rI   r   r   rO   rO   rP   r     s   zEmailView.get_ajax_datac                 C   s   | j r
tjr
tdS | jS )Nr   )r   r   r   r   ru   rX   rO   rO   rP   r[     s   zEmailView.get_success_url)rp   rq   rr   r   r   rs   rt   r   rW   r   ru   r8   rG   rQ   r_   r   r   r   r   r   rj   r   r[   rw   rO   rO   rM   rP   r   X  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   rT   )Nr   rU   rX   rO   rO   rP   r8     rY   z!PasswordChangeView.get_form_classc                    s2   | j j sttdS t j|g|R i |S )Naccount_set_passwordrJ   r{   has_usable_passwordr
   r   rF   rG   rH   rM   rO   rP   rG        zPasswordChangeView.dispatchc                       t   }| jj|d< |S r   rF   rQ   rJ   r{   rR   rM   rO   rP   rQ        
z"PasswordChangeView.get_form_kwargsc                 C      t  | jS rz   r    get_password_change_redirect_urlrJ   rX   rO   rO   rP   get_default_success_url     z*PasswordChangeView.get_default_success_urlc                    &   |   tj| j|j t |S rz   )saver!   password_changefinalize_password_changerJ   r{   rF   r_   r   rM   rO   rP   r_        zPasswordChangeView.form_validc                    $   t  jdi |}|d|d< |S )Nr]   password_change_formrO   rF   rj   r   r   rM   rO   rP   rj        z#PasswordChangeView.get_context_data)rp   rq   rr   r   rs   rt   r   rW   r8   rv   rG   rQ   r  r_   rj   rw   rO   rO   rM   rP   r     s    
r   c                       r   )PasswordSetViewzaccount/password_set.c                 C   rT   )Nset_passwordrU   rX   rO   rO   rP   r8     rY   zPasswordSetView.get_form_classc                    s2   | j j rttdS t j|g|R i |S )Naccount_change_passwordr   rH   rM   rO   rP   rG     r   zPasswordSetView.dispatchc                    r   r   r  rR   rM   rO   rP   rQ     r  zPasswordSetView.get_form_kwargsc                 C   r  rz   r  rX   rO   rO   rP   r  "  r  z'PasswordSetView.get_default_success_urlc                    r  rz   )r	  r!   r
  finalize_password_setrJ   r{   rF   r_   r   rM   rO   rP   r_   %  r  zPasswordSetView.form_validc                    r  )Nr]   password_set_formrO   r  r   rM   rO   rP   rj   *  r  z PasswordSetView.get_context_data)rp   rq   rr   r   rs   rt   r   rW   r8   rv   rG   rQ   r  r_   rj   rw   rO   rO   rM   rP   r  	  s    
r  c                       sF   e Zd Zdej ZeZedZ	dd Z
 fddZ fddZ  ZS )	PasswordResetViewzaccount/password_reset.account_reset_password_donec                 C   rT   )Nreset_passwordrU   rX   rO   rO   rP   r8   ;  rY   z PasswordResetView.get_form_classc                    s<   t j| jd|jd  d}|r|S || j t |S )Nr  r   )rA   r   )r4   consume_or_429rJ   cleaned_datalowerr	  rF   r_   )rI   r]   r429rM   rO   rP   r_   >  s   zPasswordResetView.form_validc                    s@   t  jdi |}| td}|d|d< |d|i |S )Nr   r]   password_reset_formr   rO   )rF   rj   rk   r   r   rl   )rI   rL   ro   r   rM   rO   rP   rj   I  s
   z"PasswordResetView.get_context_data)rp   rq   rr   r   rs   rt   r   rW   r   ru   r8   r_   rj   rw   rO   rO   rM   rP   r  5  s    
r  c                   @      e Zd Zdej ZdS )PasswordResetDoneViewzaccount/password_reset_done.Nrp   rq   rr   r   rs   rt   rO   rO   rO   rP   r  V      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 )PasswordResetFromKeyViewz account/password_reset_from_key.$account_reset_password_from_key_donezset-passwordc                 C   rT   )Nr"  rU   rX   rO   rO   rP   r8   k     
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]   )rJ   r   r8   r   rV   r    r   r   reset_url_keyr   r   INTERNAL_RESET_SESSION_KEYis_valid
reset_userr{   r   r   r   rF   rG   rk   pathreplacer6   r   rj   r)   )
rI   rJ   r)  r   rL   user_token_form_classr   
token_formrZ   r\   rM   rO   rP   rG   p  s:   z!PasswordResetFromKeyView.dispatchc                    s<   t t| jdi |}td| jd | jd dd|d< |S )Naccount_reset_password_from_keyr)  r   r(  )rL   
action_urlrO   )rF   r#  rj   r   rL   r   rM   rO   rP   rj     s   
z)PasswordResetFromKeyView.get_context_datac                    s&   t t|  }| j|d< | j|d< |S )Nr{   temp_key)rF   r#  rQ   r.  r   rR   rM   rO   rP   rQ     s   

z(PasswordResetFromKeyView.get_form_kwargsc                    s>   |   tj| j| j tjrt| j| jS t	t
| |S rz   )r	  r!   password_resetfinalize_password_resetrJ   r.  r   LOGIN_ON_PASSWORD_RESETr0   rF   r#  r_   r   rM   rO   rP   r_     s   z#PasswordResetFromKeyView.form_valid)rp   rq   rr   r   rs   rt   r   rW   r   ru   r+  r8   rG   rj   rQ   r_   rw   rO   rO   rM   rP   r#  ^  s    
,r#  c                   @   r  )PasswordResetFromKeyDoneViewz%account/password_reset_from_key_done.Nr   rO   rO   rO   rP   r9    s    r9  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 rz   )r   LOGOUT_ON_GETr   rJ   r{   r   r6   r   r)   rj   r   )rI   rK   rL   r\   r   rO   rO   rP   r     s   

zLogoutView.getc                 O   s$   |   }|   t|}t| j|S rz   )r   r   r6   r)   rJ   )rI   rK   rL   r   r\   rO   rO   rP   r     s   zLogoutView.postc                 C   s   |   pt| j| jS rz   )r   r   rJ   get_logout_redirect_urlrX   rO   rO   rP   r     s   zLogoutView.get_redirect_urlN)	rp   rq   rr   r   rs   rt   r   r   r   rO   rO   rO   rP   r:    s
    

r:  c                   @   r  )AccountInactiveViewzaccount/account_inactive.Nr   rO   rO   rO   rP   r=    r!  r=  c                   @   r  )EmailVerificationSentViewzaccount/verification_sent.Nr   rO   rO   rO   rP   r>    r!  r>  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|dd\| _| _	| j	od| j	v}| j	r(|j
jr6| js6|s6tt|j
jr2dS dS t j|g|R i |S )NTpeekcoder   r   )r/   enterr-   r   stager!   email_verification_by_codeget_pending_verificationr   pending_verificationr{   is_anonymousr
   r   rF   rG   )rI   rJ   rK   rL   verification_is_fakerM   rO   rP   rG     s0   

z)ConfirmEmailVerificationCodeView.dispatchc                 C   rT   )Nconfirm_email_verification_coderU   rX   rO   rO   rP   r8     r%  z/ConfirmEmailVerificationCodeView.get_form_classc                    s$   t   }| jr| jjnd|d< |S )Nr'  rB  )rF   rQ   r   r   r   rM   rO   rP   rQ     s   
z0ConfirmEmailVerificationCodeView.get_form_kwargsc                    s:   t  jdi |}| jd |d< | jrd ntd|d< |S )Nr   r   
cancel_urlrO   )rF   rj   rG  rD  r   r   rM   rO   rP   rj     s   z1ConfirmEmailVerificationCodeView.get_context_datac                 C   sX   | j | j}| jr|s| j S | j S |s td}t	|S t| j|}t	|S )Nr   )
r   confirmrJ   rD  abortexitr   r   r   r
   )rI   r]   r   r   rO   rO   rP   r_   "  s   


z+ConfirmEmailVerificationCodeView.form_validc                    sR   t j| j| j}|rt |S t| j}|j| jt	j
|jd d ttdS )Ntoo_many_login_attemptsmessager   )r!   rE  record_invalid_attemptrJ   rG  rF   form_invalidr   add_messager   ERRORerror_messagesr
   r   rI   r]   attempts_leftadapterrM   rO   rP   rS  0  s   
z-ConfirmEmailVerificationCodeView.form_invalid)rp   rq   rr   r   rs   rt   r   rW   rG   r8   rQ   rj   r_   rS  rw   rO   rO   rM   rP   r?    s    r?  c                 C   s   t jr	t | S t | S rz   )r   r   r?  as_viewr>  rJ   rO   rO   rP   email_verification_sent?  s   r\  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 rz   )(_check_reauthentication_method_available_check_ratelimitrF   rG   )rI   rJ   rK   rL   r   rM   rO   rP   rG   H  s   

zBaseReauthenticateView.dispatchc                 C   s   t j| jd| jjdS )Nreauthenticate)rA   r{   )r4   r  rJ   r{   )rI   rJ   rO   rO   rP   r_  Q  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   )r/  )r   mr[  rO   rP   r   Z  s    zSBaseReauthenticateView._check_reauthentication_method_available.<locals>.<listcomp>zReauthentication not availabler   r   )r   get_reauthentication_methodsrJ   r{   anyr   rk   r
   )rI   rJ   methodsr   rO   r[  rP   r^  X  s   z?BaseReauthenticateView._check_reauthentication_method_availablec                 C   s   t | j| j}|S rz   )r   rJ   get_login_redirect_urlr   rO   rO   rP   r  c  s   z.BaseReauthenticateView.get_default_success_urlc                    s"   t j| j}|r|S t |S rz   )r!   reauthenticationresume_requestrJ   rF   r_   )rI   r]   r\   rM   rO   rP   r_   g  s   z!BaseReauthenticateView.form_validc                    s(   t  jdi |}|d|  i |S )Nreauthentication_alternativesrO   )rF   rj   rl   !get_reauthentication_alternativesr   rM   rO   rP   rj   m  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descriptionrO   )altrO   rO   rP   <lambda>  s    zJBaseReauthenticateView.get_reauthentication_alternatives.<locals>.<lambda>)r   )	r   rb  rJ   r{   dictr/  rk   r   sorted)rI   rd  altsrE   rk  rO   rO   rP   ri  v  s   z8BaseReauthenticateView.get_reauthentication_alternatives)rp   rq   rr   rG   r_  r^  r  r_   rj   ri  rw   rO   rO   rM   rP   r]  G  s    		r]  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   rT   )Nr`  rU   rX   rO   rO   rP   r8     rY   z!ReauthenticateView.get_form_classc                    r   r   r  r   rM   rO   rP   rQ     r  z"ReauthenticateView.get_form_kwargsc                    s   t j| j t |S rz   )r!   rf  reauthenticate_by_passwordrJ   rF   r_   r   rM   rO   rP   r_     s   zReauthenticateView.form_valid)rp   rq   rr   r   rW   r   rs   rt   r8   rQ   r_   rw   rO   rO   rM   rP   rp    s    
rp  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   rT   )Nrequest_login_coderU   rX   rO   rO   rP   r8     rY   z#RequestLoginCodeView.get_form_classc                    s"   t j| j|jd  t |S )Nr   )r!   login_by_coders  rJ   r  rF   r_   r   rM   rO   rP   r_     s   zRequestLoginCodeView.form_validc                 C   s(   | j jjrd S td}| td}|S )Naccount_confirm_login_code)rJ   r{   r   r   rk   r   r   rO   rO   rP   r[     s
   
z$RequestLoginCodeView.get_success_urlc                    s.   t  jdi |}t| j}|d|i |S )Nrb   rO   )rF   rj   r   rJ   rl   rI   rL   ro   rb   rM   rO   rP   rj     s   
z%RequestLoginCodeView.get_context_data)rp   rq   rr   r   rW   r   rs   rt   r8   r_   r[   rj   rw   rO   rO   rM   rP   rr    s    
rr  c                   C   s   t jrdS dS )Nrf   r   )r   rd   rO   rO   rO   rP   _login_by_code_urlname  s
   rw  )rD  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                    sV   |j | _tjj| j| jjdd\| _| _| jst	t
t S t j|g|R i |S )NTr@  )_login_stagerD  r!   rt  get_pending_loginrJ   r?   r{   pending_loginr
   r   rw  rF   rG   rH   rM   rO   rP   rG     s   zConfirmLoginCodeView.dispatchc                 C   rT   )Nconfirm_login_coderU   rX   rO   rO   rP   r8     rY   z#ConfirmLoginCodeView.get_form_classc                    s    t   }| jdd|d< |S )NrB  r'  )rF   rQ   r|  r   rR   rM   rO   rP   rQ     s   
z$ConfirmLoginCodeView.get_form_kwargsc                 C   s   |   }tj| j| j|S rz   )r   r!   rt  perform_login_by_coderJ   rD  )rI   r]   rZ   rO   rO   rP   r_     s   
zConfirmLoginCodeView.form_validc                    sh   t j| j| jj}|rt |S t| j}|j	| jt
j|jd d tt| jd r0t S dS )NrO  rP  initiated_by_userr   )r!   rt  rR  rJ   rD  r?   rF   rS  r   rT  r   rU  rV  r
   r   r|  rw  rW  rM   rO   rP   rS    s(   

z!ConfirmLoginCodeView.form_invalidc                    s6   t  jdi |}t| j}||| jd d |S )Nr   )rb   r   rO   )rF   rj   r   rJ   rl   r|  rv  rM   rO   rP   rj     s   
z%ConfirmLoginCodeView.get_context_data)rp   rq   rr   r   rW   r   rs   rt   r   r   rG   r8   rQ   r_   rS  rj   rw   rO   rO   rM   rP   ry    s    
	ry  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   rC   allauth.accountallauth.account.adapterr   allauth.account.formsr   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.stagesr-   r.   r/   allauth.account.utilsr0   r1   r2   r3   allauth.corer4   allauth.core.exceptionsr5   allauth.core.internal.httpkitr6   allauth.decoratorsr7   allauth.utilsr8   r,  rv   r>   rZ  r?   rx   ry   r   signup_by_passkeyr   confirm_emailr   r   r   r
  r  password_setr  r6  r  password_reset_doner#  password_reset_from_keyr9  password_reset_from_key_doner:  r   r=  account_inactiver>  r?  r\  r]  rp  r`  rr  rs  rw  r   ry  r}  rO   rO   rO   rP   <module>   s    8 
@
U	
a
 
"
"



X



Q

<
<