
    )Jf6              	       0   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 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mZmZ d dlm Z  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+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7 d dl8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD d dlEmFZF d dlGmHZH d dlImJZJ d dlKmLZL d dlMmNZNmOZO dZP e edddd                     ZQdTd"ZR G d# d$eS          ZT G d% d&eS          ZU G d' d(eS          ZV G d) d*eTeUe           ZWeWX                                ZY G d+ d,eS          ZZ e eLd-.          d/0           G d1 d2eTeZeUe                       Z[e[X                                Z\ G d3 d4eeVe          Z]e]X                                Z^ e eLd5.          d/0           e e)d6d7 8          d/0           G d9 d:eUe                                   Z_ ee_X                                          Z` e eLd;.          d/0           G d< d=eUe                       Za eeaX                                          Zb e eLd;.          d/0           G d> d?eUe                       Zc eecX                                          Zd e eLd@.          d/0           G dA dBeUe                       ZeeeX                                Zf G dC dDe          ZgegX                                Zh e eLdE.          d/0           G dF dGeUeVe                       ZieiX                                Zj G dH dIe          ZkekX                                Zl G dJ dKeeVe          ZmemX                                Zn G dL dMe          ZoeoX                                Zp G dN dOe          ZqeqX                                Zr G dP dQe           Zs G dR dSes          Zt eetX                                          Zud!S )U    )messages)REDIRECT_FIELD_NAME)login_required)get_current_site)PermissionDenied)validate_email)ValidationError)Http404HttpResponsePermanentRedirectHttpResponseRedirect)reversereverse_lazy)method_decorator)never_cache)sensitive_post_parameters)TemplateResponseMixinTemplateViewView)FormView)app_settings)r   signals)get_adapter)reauthentication_required)	AddEmailFormChangePasswordForm	LoginFormReauthenticateFormResetPasswordFormResetPasswordKeyFormSetPasswordForm
SignupFormUserTokenForm)EmailAddressEmailConfirmationEmailConfirmationHMAC)record_authenticationresume_request)	complete_signupget_login_redirect_urlget_next_redirect_urllogout_on_password_changepassthrough_next_redirect_urlperform_loginsend_email_confirmationsync_user_email_addressesurl_str_to_user_pk)	ratelimit)ImmediateHttpResponse)redirect)
rate_limit)get_form_classget_request_param_password_reset_keyoldpasswordpassword	password1	password2Nc                     t                      }|                    |           rOt          |t                    st          |t                    r	|d         }nd }|                    | ||||          }|S )NLocation)formdataredirect_to)r   is_ajax
isinstancer   r   ajax_response)requestresponser>   r?   adapterr@   s         X/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/account/views.py_ajax_responserH   F   s    mmGw 	
h 455 	3:
 :
 	 #:.KKK((XDt ) 
 
 O    c                   $     e Zd Z fdZd Z xZS )RedirectAuthenticatedUserMixinc                     |j         j        r?t          j        r3|                                 }t          |          }t          ||          S  t          t          |           j	        |g|R i |}|S N)
useris_authenticatedr   AUTHENTICATED_LOGIN_REDIRECTSget_authenticated_redirect_urlr   rH   superrK   dispatch)selfrD   argskwargsr@   rE   	__class__s         rG   rS   z'RedirectAuthenticatedUserMixin.dispatchV   s    <( 	\-W 	==??K+K88H!'8444Ku;TBBK  "( H rI   c                 b    | j         }t          | j        |                                 |          S )N)urlredirect_field_name)rZ   r)   rD   get_success_url)rT   rZ   s     rG   rQ   z=RedirectAuthenticatedUserMixin.get_authenticated_redirect_urla   s9    "6%L$$&& 3
 
 
 	
rI   )__name__
__module____qualname__rS   rQ   __classcell__rW   s   @rG   rK   rK   U   sG        	 	 	 	 	
 
 
 
 
 
 
rI   rK   c                   <     e Zd Z fdZd Zd fd	Zd Zd Z xZS )AjaxCapableProcessFormViewMixinc                      t          t          |           j        |g|R i |}|                                 }t	          | j        |||                                           S N)r>   r?   )rR   rb   getget_formrH   rD   _get_ajax_data_if)rT   rD   rU   rV   rE   r>   rW   s         rG   re   z#AjaxCapableProcessFormViewMixin.getk   s|    C58$??C

 
 
$
 
 }}L(D4J4J4L4L
 
 
 	
rI   c                 &   |                                  }|                     |          }|                                r|                     |          }n|                     |          }t          | j        |||                                           S rd   )r5   rf   is_valid
form_validform_invalidrH   rD   rg   )rT   rD   rU   rV   
form_classr>   rE   s          rG   postz$AjaxCapableProcessFormViewMixin.postt   s    ((**
}}Z((==?? 	/t,,HH((..HL(D4J4J4L4L
 
 
 	
rI   Nc                     t          | dd           }|/t          t          |                               |          }|| _        |S )N_cached_form)getattrrR   rb   rf   ro   )rT   rl   r>   rW   s      rG   rf   z(AjaxCapableProcessFormViewMixin.get_form   sD    t^T22<8$??HHTTD $DrI   c                     t          | j                                      | j                  r|                                 nd S rM   )r   rD   rA   get_ajax_datarT   s    rG   rg   z1AjaxCapableProcessFormViewMixin._get_ajax_data_if   s?     4<((00>>D   	
rI   c                     d S rM    rs   s    rG   rr   z-AjaxCapableProcessFormViewMixin.get_ajax_data   s    trI   rM   )	r\   r]   r^   re   rm   rf   rg   rr   r_   r`   s   @rG   rb   rb   j   s        
 
 
 
 
	
 	
 	
     
 
 
      rI   rb   c                       e Zd Zd ZdS )LogoutFunctionalityMixinc                     t          | j                  }|                    | j        t          j        d           |                    | j                   d S )Nzaccount/messages/logged_out.txt)r   rD   add_messager   SUCCESSlogout)rT   rF   s     rG   r{   zLogoutFunctionalityMixin.logout   sR    dl++L(*,M	
 	
 	
 	t|$$$$$rI   N)r\   r]   r^   r{   ru   rI   rG   rw   rw      s#        % % % % %rI   rw   c                        e Zd ZeZdej        z   ZdZe	Z
e ee           fd                        Z fdZd Zd Zd Z fdZ xZS )		LoginViewzaccount/login.Nc                 L     t          t          |           j        |g|R i |S rM   )rR   r}   rS   rT   rD   rU   rV   rW   s       rG   rS   zLoginView.dispatch   s2     /uY%%.wHHHHHHHrI   c                 j    t          t          |                                           }| j        |d<   |S )NrD   )rR   r}   get_form_kwargsrD   rT   rV   rW   s     rG   r   zLoginView.get_form_kwargs   s/    y$''7799 LyrI   c                 B    t          t          j        d| j                  S )Nloginr5   r   FORMSrl   rs   s    rG   r5   zLoginView.get_form_class   s    l0'4?KKKrI   c                     |                                  }	 |                    | j        |          S # t          $ r}|j        cY d }~S d }~ww xY w)Nredirect_url)r[   r   rD   r2   rE   )rT   r>   success_urles       rG   rj   zLoginView.form_valid   sf    **,,	::dl:EEE$ 	 	 	:	s   2 
AAAAc                 H    t          | j        | j                  p| j        }|S rM   r*   rD   rZ   r   rT   rets     rG   r[   zLoginView.get_success_url   -     "$,0HII   	 
rI   c                 H    t          t          |           j        di |}t          | j        t          d          | j                  }t          | j        | j                  }t          | j                  }|	                    ||| j        |t          j        d           |S )Naccount_signup)
signup_urlsiterZ   redirect_field_valueSOCIALACCOUNT_ENABLEDru   )rR   r}   get_context_datar,   rD   r   rZ   r6   r   updateallauth_app_settingsr   )rT   rV   r   r   r   r   rW   s         rG   r   zLoginView.get_context_data   s    5eIt$$5????2L'"233T5M
 

  1t?WXX--

('+'?(<)=)S 	
 	
 	
 
rI   )r\   r]   r^   r   rl   r   TEMPLATE_EXTENSIONtemplate_namer   r   rZ   sensitive_post_parameters_mr   r   rS   r   r5   rj   r[   r   r_   r`   s   @rG   r}   r}      s         J$|'FFMK- k""I I I I #" ! I    
L L L            rI   r}   c                   >     e Zd Zdej        z   Z fdZd Zd Z xZ	S )CloseableSignupMixinzaccount/signup_closed.c                     	 |                                  s|                                 S n# t          $ r}|j        cY d }~S d }~ww xY w t	          t
          |           j        |g|R i |S rM   )is_openclosedr2   rE   rR   r   rS   )rT   rD   rU   rV   r   rW   s        rG   rS   zCloseableSignupMixin.dispatch   s    	<<>> %{{}}$%$ 	 	 	:	9u)4009'SDSSSFSSSs   ', 
AAAAc                 Z    t          | j                                      | j                  S rM   )r   rD   is_open_for_signuprs   s    rG   r   zCloseableSignupMixin.is_open   s"    4<((;;DLIIIrI   c                 :    | j         | j        d} | j        di |S )N)rD   templateru   )rD   template_name_signup_closedresponse_class)rT   response_kwargss     rG   r   zCloseableSignupMixin.closed   s4    |8
 
 #t"55_555rI   )
r\   r]   r^   r   r   r   rS   r   r   r_   r`   s   @rG   r   r      sn         <#BB  T T T T TJ J J6 6 6 6 6 6 6rI   r   signup)actionrS   )namec                        e Zd Zdej        z   ZeZeZ	dZ
e ee           fd                        Zd Zd Zd Z fdZ fdZ xZS )	
SignupViewzaccount/signup.Nc                 L     t          t          |           j        |g|R i |S rM   )rR   r   rS   r   s       rG   rS   zSignupView.dispatch   s2     0uZ&&/I$III&IIIrI   c                 B    t          t          j        d| j                  S )Nr   r   rs   s    rG   r5   zSignupView.get_form_class   s    l0(DOLLLrI   c                 H    t          | j        | j                  p| j        }|S rM   r   r   s     rG   r[   zSignupView.get_success_url  r   rI   c                     |                     | j                  \  | _        }|r|S 	 t          | j        | j        t          j        |                                           S # t          $ r}|j        cY d }~S d }~ww xY wrM   )	try_saverD   rN   r(   r   EMAIL_VERIFICATIONr[   r2   rE   )rT   r>   respr   s       rG   rj   zSignupView.form_valid	  s    --55	4 	K	"	/$$&&	   % 	 	 	:	s   7A   
A;*A60A;6A;c                 
    t          t          |           j        di |}|d         }| j        j                            d          }|r;dg}t          j        r|                    d           |D ]}||j	        |         _
        t          | j        t          d          | j                  }| j        }t          | j                  }	t          | j        |          }
|                    |||
|	t"          j        d           |S )Nr>   account_verified_emailemailemail2account_login)	login_urlrZ   r   r   r   ru   )rR   r   r   rD   sessionre   r   SIGNUP_EMAIL_ENTER_TWICEappendfieldsinitialr,   r   rZ   r   r6   r   r   r   )rT   rV   r   r>   r   
email_keys	email_keyr   rZ   r   r   rW   s              rG   r   zSignupView.get_context_data  s   6eJ%%6@@@@6{$(()ABB 	7!J4 ,!!(+++' 7 7	16I&..1L'/22D4L
 
	 #6--0?RSS

&':(<)=)S 	
 	
 	
 
rI   c                     t                                                      }| j        j                            d          }|r9	 t          |           n# t          $ r |cY S w xY w||d<   t          j        r||d<   |S )Nr   r   )	rR   get_initialrD   GETre   r   r	   r   r   )rT   r   r   rW   s      rG   r   zSignupView.get_initial2  s    ''%%'' $$W-- 	*u%%%%"   $GG4 *$)!s   A A#"A#)r\   r]   r^   r   r   r   r!   rl   r   rZ   r   r   r   r   rS   r5   r[   rj   r   r   r_   r`   s   @rG   r   r      s         &(GGMJ-K k""J J J J #" ! JM M M        6        rI   r   c                   Z    e Zd Zdej        z   Zd Zd Zd Zd Z	d Z
ddZd	 Zd
 Zd ZdS )ConfirmEmailViewzaccount/email_confirm.c                    	 |                                  | _        |                     | j                   t          j        r | j        |i |S n# t          $ r
 d | _        Y nw xY w|                                 }|                     |          S rM   )	
get_objectobjectlogout_other_userr   CONFIRM_EMAIL_ON_GETrm   r
   r   render_to_response)rT   rU   rV   ctxs       rG   re   zConfirmEmailView.getF  s    	//++DK""4;///0 2 ty$1&1112 	 	 	DKKK	##%%&&s+++s   AA A#"A#c                     | j         j        j        r5| 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)rD   rN   rO   pkemail_addressuser_idr{   )rT   confirmations     rG   r   z"ConfirmEmailView.logout_other_userQ  sN     L.	!$(B(JJJKKMMMMM		 	JJrI   c                 V   |                                  x| _        }|                    | j                  }|sZt	          | j                                      | j        t          j        dd|j        j	        i           | 
                    d          S |                     | j                   t	          | j                                      | j        t          j        dd|j        j	        i           t          j        r|                     |          }||S | 
                    d          S )Nz.account/messages/email_confirmation_failed.txtr   Fz$account/messages/email_confirmed.txtT)r   r   confirmrD   r   ry   r   ERRORr   r   respondr   rz   r   LOGIN_ON_EMAIL_CONFIRMATIONlogin_on_confirm)rT   rU   rV   r   r   r   s         rG   rm   zConfirmEmailView.post]  s   %)__%6%66l$,,T\:: 	'%%11@,4:;	   <<&&&t{+++DL!!--L2l067		
 	
 	
 3 	((66D ||D!!!rI   c                     |                                  }|s)|                                 }|                     |          S t          |          S rM   )get_redirect_urlr   r   r3   )rT   successr   r   s       rG   r   zConfirmEmailView.respond}  sN    ,,.. 	0''))C**3///%%%rI   c                 ,   d}t          | j                                      | j                  }|rt          |          }|j        j        }||j        k    r=| j        j        j        r,t          | j        |t          j
        j        | j                  S dS )a  
        Simply logging in the user may become a security issue. If you
        do not take proper care (e.g. don't purge used email
        confirmations), a malicious person that got hold of the link
        will be able to login over and over again and the user is
        unable to do anything about it. Even restoring their own mailbox
        security will not help, as the links will still work. For
        password reset this is different, this mechanism works only as
        long as the attacker has access to the mailbox. If they no
        longer has access they cannot issue a password request and
        intercept it. Furthermore, all places where the links are
        listed (log files, but even Google Analytics) all of a sudden
        need to be secured. Purging the email confirmation once
        confirmed changes the behavior -- users will not be able to
        repeatedly confirm (in case they forgot that they already
        clicked the mail).

        All in all, opted for storing the user that is in the process
        of signing up in the session to avoid all of the above.  This
        may not 100% work in case the user closes the browser (and the
        session gets lost), but at least we're secure.
        Nr   )r   rD   unstash_userr0   r   rN   r   is_anonymousr-   r   EmailVerificationMethodNONEr   )rT   r   user_pkuser_pk_strrN   s        rG   r   z!ConfirmEmailView.login_on_confirm  s    . !$,//<<T\JJ 	6(55G).dg$,"3"@ 49 "2    trI   Nc                    | j         d         }t          j        |          }|sa||                                 }	 |                    |                                          }n!# t          j        $ r t                      w xY w|S )Nkeyr   )	rV   r%   from_keyget_querysetre   lowerr$   DoesNotExistr
   )rT   querysetr   emailconfirmations       rG   r   zConfirmEmailView.get_object  s    k% 1:3??  	 ,,.. $,LLSYY[[L$A$A!!$1      ii   s   (A$ $Bc                 l    t           j                                        }|                    d          }|S )Nemail_address__user)r$   objects	all_validselect_related)rT   qss     rG   r   zConfirmEmailView.get_queryset  s/    &0022455	rI   c                     |}t          | j                  }|                    || j        | j        o| j        j                                        d           | j        r| j        j        j        |d<   |S )N)r   r   can_confirmr   )r   rD   r   r   r   can_set_verifiedr   )rT   rV   r   r   s       rG   r   z!ConfirmEmailView.get_context_data  s    --

 $#{  AK->>@@	 	
 	
 	
 ; 	;;4:CL
rI   c                 Z    t          | j                                      | j                  S rM   )r   rD   #get_email_confirmation_redirect_urlrs   s    rG   r   z!ConfirmEmailView.get_redirect_url  s)    4<((LLL
 
 	
rI   rM   )r\   r]   r^   r   r   r   re   r   rm   r   r   r   r   r   r   ru   rI   rG   r   r   C  s        ,|/NNM	, 	, 	,
 
 
" " "@& & && & &P
! 
! 
! 
!  
  
 
 
 
 
rI   r   manage_emailTc                     t           j        S rM   )r   REAUTHENTICATION_REQUIRED)rD   s    rG   <lambda>r     s	    0V rI   )	allow_getenabledc                        e Zd Zej        rdndej        z   ZeZ e	d          Z
d Z fdZ fdZ fdZ fdZd	 Zd
 Zd Zd Z fdZd Z xZS )	EmailViewzaccount/email_change.zaccount/email.account_emailc                 B    t          t          j        d| j                  S )N	add_emailr   rs   s    rG   r5   zEmailView.get_form_class  s    l0+tOOOrI   c                 t    t          |j                    t          t          |           j        |g|R i |S rM   )r/   rN   rR   r   rS   r   s       rG   rS   zEmailView.dispatch  s@    !',///.uY%%.wHHHHHHHrI   c                 t    t          t          |                                           }| j        j        |d<   |S NrN   )rR   r   r   rD   rN   r   s     rG   r   zEmailView.get_form_kwargs  s1    y$''7799*vrI   c                    |                     | j                  }t          | j                                      | j        t          j        dd|j        d         i           t          j        	                    | j        j
        j        | j        | j        j
        |           t          t          |                               |          S )Nz,account/messages/email_confirmation_sent.txtr   senderrD   rN   r   )saverD   r   ry   r   INFOcleaned_datar   email_addedsendrN   rW   rR   r   rj   )rT   r>   r   rW   s      rG   rj   zEmailView.form_valid  s    		$,//DL!!--LM:d'01		
 	
 	
 	  <$.L"'	 	! 	
 	
 	
 Y%%00666rI   c                 T   d }d|j         v r% t          t          |           j        |g|R i |}n|j                             d          rd|j         v r|                     |          }n=d|j         v r|                     |          }nd|j         v r|                     |          }|p t          | 	                                          }t          |||                                           }n8t          | j                  }t          |||                                           }|S )N
action_addr   action_sendaction_removeaction_primaryr?   )POSTrR   r   rm   re   _action_send_action_remove_action_primaryr   r[   rH   rg   r   )rT   rD   rU   rV   resrW   s        rG   rm   zEmailView.post  s:   7<''-%	4((-gGGGGGGCC\g&& 	N,,''00 GL00))'22!W\11**733E-d.B.B.D.DEEC !#D4J4J4L4LMMMCC 't'788C #D4J4J4L4LMMMC
rI   c                     |j         d         }	 t          |           n# t          $ r Y d S w xY w	 t          j                            |j        |          S # t          j        $ r Y d S w xY w)Nr   )rN   r   )r  r   r	   r#   r   get_for_userrN   r   )rT   rD   r   s      rG   _get_email_addresszEmailView._get_email_address  s    W%	5!!!! 	 	 	44		'44',e4TTT( 	 	 	DD	s    
--%A A*)A*c                 z    |                      |          }|r#t          | j        |j        |j                   d S d S )Nr   )r  r.   rD   rN   r   )rT   rD   rU   rV   r   s        rG   r  zEmailView._action_send  sV    //88 	#gl-2E     	 	rI   c                    |                      |          }|rt                      }|                    |          s+|                    |t          j        dd|j        i           d S |                                 t          j	        
                    |j        j        ||j        |           |                    |t          j        dd|j        i           t          |                                           S d S )Nz0account/messages/cannot_delete_primary_email.txtr   r  z"account/messages/email_deleted.txt)r  r   can_delete_emailry   r   r   r   remover   email_removedr  rN   rW   rz   r   r[   )rT   rD   rU   rV   r   rF   s         rG   r  zEmailView._action_remove&  s   //88 	D!mmG++M:: D##NFm12	     $$&&&%**"<1# "/	 +    ##$8m12	   ,D,@,@,B,BCCC/	D 	DrI   c                    |                      |          }|rB|j        sgt          j                            |j        d                                          r/t                                          |t          j
        d           d S 	 t          j                            |j        d          }n# t          j        $ r d }Y nw xY w|                                 t                                          |t          j        d           t          j                            |j        j        ||j        ||           t'          |                                           S d S )NT)rN   verifiedz-account/messages/unverified_primary_email.txt)rN   primaryz&account/messages/primary_email_set.txt)r  rD   rN   from_email_addressto_email_address)r  r"  r#   r   filterrN   existsr   ry   r   r   re   r   set_as_primaryrz   r   email_changedr  rW   r   r[   )rT   rD   rU   rV   r   r$  s         rG   r  zEmailView._action_primaryA  s   //88 &	D "*!D (//  0  &((	!D ))NC    .)5)=)A)A$\4 *B * *&& $0 . . .)-&&&.,,...))$<  
 %**"<1# '9%2 +    ,D,@,@,B,BCCCM&	D &	Ds   &B/ /CCc                     t          t          |           j        di |}t          t          j                            | j        j                  	                    d                    |
                    fdt                    D             |                    d          t          j                            | j        j                  d           t          j        rf|
                    t          j                            | j        j                  t          j                            | j        j                  d           |S )N)rN   r   c                 X    g | ]&\  }}d | |j         pt                    dk    |d'S )email_radio_   )idcheckedemailaddress)r#  len).0ir   emailss      rG   
<listcomp>z.EmailView.get_context_data.<locals>.<listcomp>s  sY     ( ( ( !5	 1Q00#(=#DCKK14D(- ( ( (rI   r>   )emailaddressesemailaddress_radiosadd_email_formcan_add_email)new_emailaddresscurrent_emailaddressru   )rR   r   r   listr#   r   r&  rD   rN   order_byr   	enumeratere   r9  r   CHANGE_EMAILget_newget_verified)rT   rV   r   r4  rW   s      @rG   r   zEmailView.get_context_datak  sG   5eIt$$5???? ''T\->'??HHQQ
 
 	

"(( ( ( ( %.f$5$5( ( ( #&''&//!-!5!C!CDLDU!V!V 	
 	
 	
 $ 	JJ(4(<(D(DT\EV(W(W,8,@,M,M)- -    
rI   c                     g }| j         j        j                                                            d          D ]0}|                    |j        |j        |j        |j	        d           1|S )Nr   )r.  r   r"  r#  )
rD   rN   emailaddress_setallr=  r   r   r   r"  r#  )rT   r?   r0  s      rG   rr   zEmailView.get_ajax_data  s{     L->BBDDMMdSS 	 	LKK&/)/ , 5+3	     rI   )r\   r]   r^   r   r?  r   r   r   rl   r   r   r5   rS   r   rj   rm   r  r  r  r  r   rr   r_   r`   s   @rG   r   r     s<        $0#<RBR'(M J,//KP P PI I I I I    
7 7 7 7 7     *	 	 	  D D D6(D (D (DT    >      rI   r   change_passwordc                   p     e Zd Zdej        z   ZeZd Ze	 fd            Z
 fdZd Z fdZ fdZ xZS )PasswordChangeViewzaccount/password_change.c                 B    t          t          j        d| j                  S )NrE  r   rs   s    rG   r5   z!PasswordChangeView.get_form_class  s    l02CT_UUUrI   c                     | j         j                                        st          t	          d                    S  t                      j        |g|R i |S )Naccount_set_passwordrD   rN   has_usable_passwordr   r   rR   rS   r   s       rG   rS   zPasswordChangeView.dispatch  s[    | 4466 	I'0F(G(GHHHuww9$999&999rI   c                 f    t                                                      }| j        j        |d<   |S r  rR   r   rD   rN   r   s     rG   r   z"PasswordChangeView.get_form_kwargs  +    ((***vrI   c                 j    | j         r| j         S t                                          | j                  S rM   r   r    get_password_change_redirect_urlrD   rs   s    rG   r[   z"PasswordChangeView.get_success_url  0     	$##}}==dlKKKrI   c                    |                                  t          | j        |j                   t	          | j                                      | j        t          j        d           t          j	        
                    | j        j        j        | j        | j        j                   t                                          |          S )N%account/messages/password_changed.txtr  rD   rN   )r  r+   rD   rN   r   ry   r   rz   r   password_changedr  rW   rR   rj   rT   r>   rW   s     rG   rj   zPasswordChangeView.form_valid  s    		!$,	:::DL!!--L3	
 	
 	

 	 %%<$.L" 	& 	
 	
 	

 ww!!$'''rI   c                 j     t                      j        di |}|                    d          |d<   |S )Nr>   password_change_formru   rR   r   re   rT   rV   r   rW   s      rG   r   z#PasswordChangeView.get_context_data  s9    &egg&0000&)ggfoo"#
rI   )r\   r]   r^   r   r   r   r   rl   r5   r   rS   r   r[   rj   r   r_   r`   s   @rG   rG  rG    s        .1PPM#JV V V !: : : : ! :
    
L L L
( ( ( ( (        rI   rG  c                   p     e Zd Zdej        z   ZeZd Ze	 fd            Z
 fdZd Z fdZ fdZ xZS )PasswordSetViewzaccount/password_set.c                 B    t          t          j        d| j                  S )Nset_passwordr   rs   s    rG   r5   zPasswordSetView.get_form_class  s    l0.$/RRRrI   c                     | j         j                                        rt          t	          d                    S  t                      j        |g|R i |S )Naccount_change_passwordrK  r   s       rG   rS   zPasswordSetView.dispatch  s[    <0022 	L'0I(J(JKKKuww9$999&999rI   c                 f    t                                                      }| j        j        |d<   |S r  rN  r   s     rG   r   zPasswordSetView.get_form_kwargs  rO  rI   c                 j    | j         r| j         S t                                          | j                  S rM   rQ  rs   s    rG   r[   zPasswordSetView.get_success_url  rS  rI   c                    |                                  t          | j        |j                   t	          | j                                      | j        t          j        d           t          j	        
                    | j        j        j        | j        | j        j                   t                                          |          S )Nz!account/messages/password_set.txtrV  )r  r+   rD   rN   r   ry   r   rz   r   password_setr  rW   rR   rj   rX  s     rG   rj   zPasswordSetView.form_valid  s    		!$,	:::DL!!--L(*,O	
 	
 	
 	!!<$.L" 	" 	
 	
 	

 ww!!$'''rI   c                 j     t                      j        di |}|                    d          |d<   |S )Nr>   password_set_formru   r[  r\  s      rG   r   z PasswordSetView.get_context_data  s9    &egg&0000#&776?? 
rI   )r\   r]   r^   r   r   r   r    rl   r5   r   rS   r   r[   rj   r   r_   r`   s   @rG   r^  r^    s         ,l.MMM JS S S !: : : : ! :
    
L L L
( ( ( ( (        rI   r^  reset_passwordc                   `     e Zd Zdej        z   ZeZ ed          Z	e
Zd Z fdZ fdZ xZS )PasswordResetViewzaccount/password_reset.account_reset_password_donec                 B    t          t          j        d| j                  S )Nri  r   rs   s    rG   r5   z PasswordResetView.get_form_class	      l02BDOTTTrI   c                    t          j        | j        d|j        d                                                   }|r|S |                    | j                   t          t          |                               |          S )Nreset_password_emailr   )r   r   )	r1   consume_or_429rD   r
  r   r  rR   rk  rj   )rT   r>   r429rW   s      rG   rj   zPasswordResetView.form_valid  s{    'L)!'*0022
 
 

  	K		$,&--88>>>rI   c                      t          t          |           j        di |}t          | j        t          d          | j                  }|                    d          |d<   |                    d|i           |S )Nr   r>   password_reset_formr   ru   )	rR   rk  r   r,   rD   r   rZ   re   r   )rT   rV   r   r   rW   s       rG   r   z"PasswordResetView.get_context_data  s|    =e%t,,=GGGG1L'/22D4L
 
	 &)WWV__!"

K+,,,
rI   )r\   r]   r^   r   r   r   r   rl   r   r   r   rZ   r5   rj   r   r_   r`   s   @rG   rk  rk    s        -0OOM"J,<==K-U U U	? 	? 	? 	? 	?	 	 	 	 	 	 	 	 	rI   rk  c                   "    e Zd Zdej        z   ZdS )PasswordResetDoneViewzaccount/password_reset_done.Nr\   r]   r^   r   r   r   ru   rI   rG   rv  rv  &  s        2\5TTMMMrI   rv  reset_password_from_keyc                   t     e Zd Zdej        z   ZeZ ed          Z	dZ
d Z fdZ fdZ fdZ fdZ xZS )	PasswordResetFromKeyViewz account/password_reset_from_key.$account_reset_password_from_key_donezset-passwordc                 B    t          t          j        d| j                  S )Nrx  r   rs   s    rG   r5   z'PasswordResetFromKeyView.get_form_class6  s!     94?
 
 	
rI   c                    || _         || _        t          t          j        dt
                    }| j        | j        k    r| j         j                            t          d          | _         ||| j        d          }|
                                r|j        | _        | j         j        j        rL| j         j        j        | j        j        k    r-|                                  | j        | j         j        t          <    t!          t"          |           j        ||| j        fi |S nz ||| j        d          }|
                                rR| j        | j         j        t          <   | j         j                            | j        | j                  }t+          |          S d | _        |                     |                     d                    }t1          | j         ||          S )N
user_token uidb36r   r  T)
token_fail)r>   )rD   r   r5   r   r   r"   reset_url_keyr   re   INTERNAL_RESET_SESSION_KEYri   
reset_userrN   rO   r   r{   rR   rz  rS   pathreplacer3   r   r   rH   )
rT   rD   r  r   rV   user_token_form_class
token_formr   rE   rW   s
            rG   rS   z!PasswordResetFromKeyView.dispatch;  s    .m!
 !
 8t)))|+//0JBOODH..vdh4W4WXXXJ""$$ ","7 L%6P),0BBBKKMMMGKxDL()CDEu5t<<EVTX 17  " /.vdh4W4WXXXJ""$$ .
 DH8$%?@#|0884CUVV---**4+@+@D+@+Q+QRRdlH:FFFFrI   c                      t          t          |           j        di |}t          d| j        d         | j        d         d          |d<   |S )Naccount_reset_password_from_keyr  r   r  )rV   
action_urlru   )rR   rz  r   r   rV   r\  s      rG   r   z)PasswordResetFromKeyView.get_context_datae  sg    De,d33DNNvNN#-+h/{5) 
 
 
L 
rI   c                 ~    t          t          |                                           }| j        |d<   | j        |d<   |S )NrN   temp_key)rR   rz  r   r  r   r   s     rG   r   z(PasswordResetFromKeyView.get_form_kwargsp  s;    /66FFHHv!XzrI   c                 j   |                                  t          | j                  }| j        rNt          j        rB| j        j                                        D ]#}|                    | j        |j	                   $|
                    | j        t          j        d           t          j                            | j        j        | j        | j                   t          j        r&t%          | j        | j        t          j                  S t)          t*          |                               |          S )Nr  rU  rV  )email_verification)r  r   rD   r  r   LOGIN_ATTEMPTS_LIMITrC  rD  #_delete_login_attempts_cached_emailr   ry   r   rz   r   password_resetr  rW   LOGIN_ON_PASSWORD_RESETr-   r   rR   rz  rj   )rT   r>   rF   r   rW   s       rG   rj   z#PasswordResetFromKeyView.form_validv  s1   		dl++? 	|@ 	 9==??  ;;L <     	L3	
 	
 	

 	##?,L 	$ 	
 	
 	
 / 	 #/#B    -t44??EEErI   )r\   r]   r^   r   r   r   r   rl   r   r   r  r5   rS   r   r   rj   r_   r`   s   @rG   rz  rz  -  s         79XXM%J,EFFK"M
 
 

(G (G (G (G (GT	 	 	 	 	    F F F F F F F F FrI   rz  c                   "    e Zd Zdej        z   ZdS )PasswordResetFromKeyDoneViewz%account/password_reset_from_key_done.Nrw  ru   rI   rG   r  r    s        /,2QQ MMrI   r  c                   >    e Zd Zdej        z   ZeZd Zd Z	d Z
d ZdS )
LogoutViewzaccount/logout.c                 >   t           j        r | j        |i |S | j        j        j        s6t          |                                           }t          | j        |          S | 	                                }| 
                    |          }t          | j        |          S rM   )r   LOGOUT_ON_GETrm   rD   rN   rO   r3   r   rH   r   r   )rT   rU   rV   rE   r   s        rG   re   zLogoutView.get  s    % 	.49d-f---| 1 	: 5 5 7 788H!$,999##%%**3//dlH555rI   c                     |                                  }| j        j        j        r|                                  t          |          }t          | j        |          S rM   )r   rD   rN   rO   r{   r3   rH   )rT   rU   rV   rY   rE   s        rG   rm   zLogoutView.post  sM    ##%%<- 	KKMMMC==dlH555rI   c                 x    |}t          | j        | j                  }|                    | j        |d           |S )N)rZ   r   )r6   rD   rZ   r   )rT   rV   r   r   s       rG   r   zLogoutView.get_context_data  sL    0t?WXX

'+'?(< 	
 	
 	
 
rI   c                     t          | j        | j                  p+t          | j                                      | j                  S rM   )r*   rD   rZ   r   get_logout_redirect_urlrs   s    rG   r   zLogoutView.get_redirect_url  sB    $L$2
 
 M&&>>t|LL	MrI   N)r\   r]   r^   r   r   r   r   rZ   re   rm   r   r   ru   rI   rG   r  r    sh        %(GGM-6 6 66 6 6	 	 	M M M M MrI   r  c                   "    e Zd Zdej        z   ZdS )AccountInactiveViewzaccount/account_inactive.Nrw  ru   rI   rG   r  r    s        /,2QQMMMrI   r  c                   "    e Zd Zdej        z   ZdS )EmailVerificationSentViewzaccount/verification_sent.Nrw  ru   rI   rG   r  r    s        0<3RRMMMrI   r  c                   N     e Zd ZeZ fdZd Zd Zd Z fdZ	 fdZ
d Z xZS )BaseReauthenticateViewc                     |                      |          }|r|S |                     |          }|r|S  t                      j        |g|R i |S rM   )(_check_reauthentication_method_available_check_ratelimitrR   rS   )rT   rD   rU   rV   r   rW   s        rG   rS   zBaseReauthenticateView.dispatch  sj    <<WEE 	K$$W-- 	Kuww9$999&999rI   c                 N    t          j        | j        d| j        j                  S )Nreauthenticate)r   rN   )r1   rq  rD   rN   )rT   rD   s     rG   r  z'BaseReauthenticateView._check_ratelimit  s,    'L#"
 
 
 	
rI   c                    t                                          | j        j                  }t	          fd|D                       rd S |st          d          t          |d         d         | j                  }t          |          S )Nc                 2    g | ]}|d          j         k    S )rY   )r  )r2  mrD   s     rG   r5  zSBaseReauthenticateView._check_reauthentication_method_available.<locals>.<listcomp>  s$    :::Q%GL(:::rI   zReauthentication not availabler   rY   )	r   get_reauthentication_methodsrD   rN   anyr   r,   rZ   r   )rT   rD   methodsrY   s    `  rG   r  z?BaseReauthenticateView._check_reauthentication_method_available  s    --<<T\=NOO::::':::;; 	4 	E"#CDDD+WQZ&(@
 
 $C(((rI   c                     t          | j        | j                  }|s,t          | j                                      | j                  }|S rM   )r*   rD   rZ   r   r)   )rT   rY   s     rG   r[   z&BaseReauthenticateView.get_success_url  sC    #DL$2JKK 	Qdl++BB4<PPC
rI   c                     t          | j        | j        j                   t          | j                  }|r|S t	                                          |          S rM   )r&   rD   rN   r'   rR   rj   )rT   r>   rE   rW   s      rG   rj   z!BaseReauthenticateView.form_valid   sN    dlDL,=>>>!$,// 	Oww!!$'''rI   c                      t                      j        di |}t          | j        | j                  }|                    | j        ||                                 d           |S )N)rZ   r   reauthentication_alternativesru   )rR   r   r6   rD   rZ   r   !get_reauthentication_alternatives)rT   rV   r   r   rW   s       rG   r   z'BaseReauthenticateView.get_context_data  ss    &egg&00000t?WXX

'+'?(<151W1W1Y1Y 	
 	
 	
 
rI   c                 L   t                                          | j        j                  }g }|D ]a}t	          |          }| j        j        |d         k    r(t          | j        |d         | j                  |d<   |                    |           bt          |d           }|S )NrY   c                     | d         S )Ndescriptionru   )alts    rG   r   zJBaseReauthenticateView.get_reauthentication_alternatives.<locals>.<lambda>  s    C,> rI   r   )
r   r  rD   rN   dictr  r,   rZ   r   sorted)rT   r  altsmethodr  s        rG   r  z8BaseReauthenticateView.get_reauthentication_alternatives  s    --<<T\=NOO 	 	Fv,,C| CJ..6c%j$*B CJ KKd > >???rI   )r\   r]   r^   r   rZ   rS   r  r  r[   rj   r   r  r_   r`   s   @rG   r  r    s        -: : : : :
 
 
) ) )  ( ( ( ( (
 
 
 
 
      rI   r  c                   <     e Zd ZeZdej        z   Zd Z fdZ	 xZ
S )ReauthenticateViewzaccount/reauthenticate.c                 B    t          t          j        d| j                  S )Nr  r   rs   s    rG   r5   z!ReauthenticateView.get_form_class&  rn  rI   c                 f    t                                                      }| j        j        |d<   |S r  rN  )rT   r   rW   s     rG   r   z"ReauthenticateView.get_form_kwargs)  s+    gg%%''l'F
rI   )r\   r]   r^   r   rl   r   r   r   r5   r   r_   r`   s   @rG   r  r  "  s\        #J-0OOMU U U        rI   r  )NN)vdjango.contribr   django.contrib.authr   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   r   r   django.views.generic.editr   allauthr   r   allauth.accountr   allauth.account.adapterr   allauth.account.decoratorsr   allauth.account.formsr   r   r   r   r   r   r    r!   r"   allauth.account.modelsr#   r$   r%    allauth.account.reauthenticationr&   r'   allauth.account.utilsr(   r)   r*   r+   r,   r-   r.   r/   r0   allauth.corer1   allauth.core.exceptionsr2   allauth.core.internal.httpr3   allauth.decoratorsr4   allauth.utilsr5   r6   r  r   rH   r   rK   rb   rw   r}   as_viewr   r   r   r   r   confirm_emailr   r   rG  password_changer^  rf  rk  r  rv  password_reset_donerz  password_reset_from_keyr  password_reset_from_key_doner  r{   r  account_inactiver  email_verification_sentr  r  r  ru   rI   rG   <module>r     s	   # # # # # # 3 3 3 3 3 3 9 9 9 9 9 9 ; ; ; ; ; ; 3 3 3 3 3 3 1 1 1 1 1 1 ( ( ( ( ( (         
 . - - - - - - - 4 4 4 4 4 4 5 5 5 5 5 5 C C C C C C O O O O O O O O O O . . . . . . 8 8 8 8 8 8 1 1 1 1 1 1 1 1 / / / / / / @ @ @ @ @ @
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
         
       
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 # " " " " " 9 9 9 9 9 9 / / / / / / ) ) ) ) ) ) ; ; ; ; ; ; ; ; 3  /.mZkRR  
   
 
 
 
 
V 
 
 
*$ $ $ $ $f $ $ $N% % % % %v % % %5 5 5 5 5"$CX5 5 5p 	6 6 6 6 66 6 6 60 **H---J???O O O O O"#	O O @?Od 
				L
 L
 L
 L
 L
,.F L
 L
 L
^ !((** **N333*EEE V V   
	  y y y y y/ y y  FEyx 	y((**++ **$5666ZHHH+ + + + +8( + + IH+\ !.!3!;!;!=!=>>  J'(((		  ) ) ) ) )5x ) ) )X ~o557788 **$4555JGGG    7   HG@ #**,,U U U U UL U U U ,3355  **$=>>>ZPPPfF fF fF fF fF#%=xfF fF QPfFR 3::<<     <     <CCEE #M #M #M #M #M&(@$ #M #M #ML 
				R R R R R, R R R '..00 S S S S S S S S 4;;== E E E E EX E E EP
 
 
 
 
/ 
 
 
   2 : : < <==rI   