
    Sњh|                     *   S SK Jr  S SKJr  S SKJrJrJr  S SKJ	r	  S SK
JrJr  S SKJr  S SKJr  S SKJrJr  S S	KJr  S S
KJrJrJr  S SKJr  S SKJrJrJ r   S SK!J"r"  S SK#J$r$J%r%  S SK&J'r'  S SK(J)r)  S SK*J+r+J,r,  S SK-J.r.  S SK/J0r0  S SK1J2r2J3r3  SSK4J5r5  SSK6J7r7  SSK8J9r9J:r:  SSK;J<r<J=r=J>r>J?r?J@r@   " S S\	5      rA\5R                  " 5       rC " S S5      rD " S S\R                  5      rF " S  S!\)" 5       5      rG " S" S#\G5      rH " S$ S%\R                  5      rI " S& S'\I5      rJ " S( S)\D\I5      rK " S* S+\D\I5      rL " S, S-\R                  5      rM " S. S/\D\R                  5      rN " S0 S1\R                  5      rO " S2 S3\R                  5      rP " S4 S5\R                  5      rQ " S6 S7\R                  5      rR " S8 S9\R5      rS " S: S;\R5      rT " S< S=\R5      rU " S> S?\R5      rV " S@ SA\R                  5      rW " SB SC\R                  5      rXgD)E    )Optional)forms)REDIRECT_FIELD_NAMEget_user_modelpassword_validation)PasswordResetTokenGenerator)
exceptions
validators)TemplateDoesNotExist)render_to_string)NoReverseMatchreverse)	mark_safe)gettextgettext_lazypgettext)LoginMethod)
EmailFieldPasswordFieldSetPasswordField)flows)email_already_existssync_user_email_address)phone_already_exists)base_signup_form_class)context	ratelimit)compare_user_code)headed_redirect_response)get_username_max_lengthset_form_field_order   )app_settings)get_adapter)EmailAddressLogin)filter_users_by_emailsetup_user_emailurl_str_to_user_pk
user_emailuser_usernamec                   (   ^  \ rS rSrU 4S jrSrU =r$ )%EmailAwarePasswordResetTokenGenerator'   c                 *  > [         TU ]  X5      n[        U5        [        U5      n[	        U(       a  U/O/ 5      nUR                  [        R                  R                  US9R                  SSS95        USR                  [        U5      5      -  nU$ )NuseremailT)flat|)super_make_hash_valuer   r*   setupdater%   objectsfiltervalues_listjoinsorted)selfr1   	timestampretr2   emails	__class__s         PD:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\allauth/account/forms.pyr6   6EmailAwarePasswordResetTokenGenerator._make_hash_value(   s    g&t7%4 eW2.  ''T'2>>wT>R	
 	sxxv''
     )__name__
__module____qualname____firstlineno__r6   __static_attributes____classcell__rB   s   @rC   r-   r-   '   s    	 	rE   r-   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )PasswordVerificationMixin7   c                    > [         TU ]  5       nUR                  S5      nUR                  S5      nU(       a'  U(       a   X#:w  a  U R                  S[	        S5      5        U$ )N	password1	password2*You must type the same password each time.)r5   cleanget	add_error_)r>   cleaned_datarR   rS   rB   s       rC   rU   PasswordVerificationMixin.clean8   sR    w} $$[1	 $$[1	))?NN;*V(WXrE   rF   )rG   rH   rI   rJ   rU   rK   rL   rM   s   @rC   rO   rO   7   s     rE   rO   c                      ^  \ rS rSr\" \" S5      SS9r\R                  " \" S5      SS9r	Sr
U 4S	 jrS
 rS rS\4S jrS rU 4S jrS\\   S\\   4S jrS\4S jrSS jrS rS rSrU =r$ )	LoginFormA   Passwordcurrent-passwordlabelautocompletezRemember MeFra   requiredNc                   > UR                  SS 5      U l        [        TU ]  " U0 UD6  [	        5       n[
        R                  [        R                  1:X  a  [        5       nO[
        R                  [        R                  1:X  aH  [        R                  " [        S5      SS.S9n[        R                  " [        S5      U[        5       S9nOw[
        R                  [        R                   1:X  a  UR#                  SS9nOD[        R                  " U R%                  5       S	S.S9n[        R                  " ['        S
S5      US9nX@R(                  S'   [+        U / SQ5        [
        R,                  b  U R(                  S	 U R/                  5         g )NrequestUsernameusernameplaceholderrb   attrs)ra   widget
max_lengthTrd   r2   zfield labelr&   ra   rm   login)rq   passwordrememberrs   )poprf   r5   __init__r$   r#   LOGIN_METHODSr   EMAILr   USERNAMEr   	TextInputrX   	CharFieldr    PHONEphone_form_field_get_login_field_placeholderr   fieldsr!   SESSION_REMEMBER_setup_password_field)r>   argskwargsadapterlogin_fieldlogin_widgetrB   s         rC   ru   LoginForm.__init__G   sD   zz)T2$)&)-%%+*;*;)<<$,K''K,@,@+AA ??&'
mZPL  //
m#24K
 ''K,=,=+>>!22D2AK ??#'#D#D#F$+L  //}g6|K  +GT#DE((4J'""$rE   c                 B   [         R                  n[        U5      S:  d   eUR                  [        R
                  [        R                  [        R                  15      (       d   e[        U5      S:X  a  [        S5      nU$ U[        R
                  [        R                  1:X  a  [        S5      nU$ U[        R
                  [        R                  1:X  a  [        S5      nU$ U[        R                  [        R                  1:X  a  [        S5      nU$ [        U5      e)Nr"      zUsername, email or phonezUsername or emailzUsername or phonezEmail or phone)
r#   rv   lenissubsetr   rx   rw   r{   rX   
ValueError)r>   methodsrj   s      rC   r}   &LoginForm._get_login_field_placeholderh   s   ,,7|a$$!!!!
 
 	
 
 w<167K  --{/@/@AA/0K  --{/@/@AA/0K
 	 **K,=,=>>,-K  W%%rE   c                    [         R                  R                  S5      nU(       d  U R                  S	 g  [	        S[         R
                  -   5      U R                  S   l        g ! [         a     Of = f [        S5      n[        S5      n[        SU SU S35      U R                  S   l        g ! [         a     g f = f)	NrR   rr   z!account/password_reset_help_text.account_reset_passwordzForgot your password?z	<a href="z">z</a>)r#   SIGNUP_FIELDSrV   r~   r   TEMPLATE_EXTENSION	help_textr   r   rX   r   r   )r>   password_field	reset_url
forgot_txts       rC   r   LoginForm._setup_password_field~   s    %3377DJ'	0@3l6U6UU1DKK
#- # 			 89I 23J09I;bD91DKK
#-	  		s#   .A% %
A21A26B1 1
B>=B>returnc                 J   U R                   S   n[        R                  R                  U5      n0 nXU'   [        R
                  [        R                  ;   a&  U[        R
                  :w  a  X[        R
                  '   U R                   R                  S5      nU(       a  XCS'   U$ )zG
Provides the credentials required to authenticate the user for
login.
rq   rr   )	rY   r   rq   derive_login_methodr   rx   r#   rv   rV   )r>   rq   methodcredentialsrr   s        rC   user_credentialsLoginForm.user_credentials   s    
 !!'*007#F   L$>$>>+...05,,-$$((4&.
#rE   c                 @    U R                   S   nUR                  5       $ )Nrq   )rY   strip)r>   rq   s     rC   clean_loginLoginForm.clean_login   s    !!'*{{}rE   c                    > [         TU ]  5         U R                  (       a  g U R                  5       nSU;   a  U R	                  U5      $ U R                  UR                  S5      UR                  S5      5      $ )Nrr   r2   phone)r5   rU   _errorsr   _clean_with_password_clean_without_passwordrV   )r>   r   rB   s     rC   rU   LoginForm.clean   sg    <<++-$,,[99++OOG$koog&>
 	
rE   r2   r   c                    0 nU(       a  XS'   U(       a  X#S'   U(       d5  U R                  S[        5       R                  S5      5        U R                  $ [        U5      nUR	                  5       (       dT  S HB  nUR
                  R                  U5      =(       d    / nU H  nU R                  SU5        M     MD     U R                  $ UR                  U l        U R                  $ )zZ
If we don't have a password field, we need to replicate the request-login-code
behavior.
r2   r   rq   invalid_login)r   r2   )
rW   r$   validation_errorRequestLoginCodeFormis_validerrorsrV   _userr1   rY   )r>   r2   r   dataformfieldr   errors           rC   r   !LoginForm._clean_without_password   s    
 !M!MNN7KM$B$B?$ST     (-D==??/E![[__U39rF!'w6 "( 0     !JJ	   rE   r   c                    [        U R                  5      nUR                  " U R                  40 UD6nU(       at  [        X1R	                  S5      S9n[
        R                  R                  [        R                  U5      (       a  UR                  S5      eX@l
        X0l        U R                  $ [
        R                  R                  U R                  S   S9nUR                  SUR                  -  5      e)Nr2   r1   r2   too_many_login_attemptsrq   )rq   z%s_password_mismatch)r$   rf   authenticater&   rV   r   rq   is_login_rate_limitedr   r   _loginr1   r   rY   value)r>   r   r   r1   rq   login_methods         rC   r   LoginForm._clean_with_password   s    dll+##DLL@K@t??7+CDE{{00%HH../HIIKI    	 !;;::''0 ; L **+ALDVDV+VWWrE   c                 v    U R                  5       nSU;   a  U R                  XU5      $ U R                  XU5      $ )Nrr   )r   _login_with_password_login_by_code)r>   rf   redirect_urlr   s       rC   rq   LoginForm.login   s>    ++-$,,WKPP""7+FFrE   c                     [        U SS 5      nUR                  S5      nUR                  S5      n[        R                  R                  R                  UUUUS9  S nU(       a
  0 nX'[        '   [        SUS9$ )Nr1   r   r2   )rf   r1   r   r2   account_confirm_login_code)query)getattrrV   r   login_by_codeLoginCodeVerificationProcessinitiater   r   )r>   rf   r   r   r1   r   r2   r   s           rC   r   LoginForm._login_by_code   s~    tVT*((88AA	 	B 	
 E)5%&'(DERRrE   c                 H   U R                   nX$l        [        R                  R	                  XU5      n[
        R                  nUc  U R                  S   nU(       a+  UR                  R                  [
        R                  5        U$ UR                  R                  S5        U$ )Nrs   r   )r   r   r   rq   perform_password_loginr#   r   rY   session
set_expirySESSION_COOKIE_AGE)r>   rf   r   r   rq   r@   rs   s          rC   r   LoginForm._login_with_password   s    )kk00uM00((4HOO&&|'F'FG 
 OO&&q)
rE   )r   rf   r1   N)rG   rH   rI   rJ   r   rX   rr   r   BooleanFieldrs   r1   ru   r}   r   dictr   r   rU   r   strr   r   rq   r   r   rK   rL   rM   s   @rC   r\   r\   A   s    1Z=?QRH!!-(85IHD%B,.$ 0	
!Xc] !8C= !.! ! GS  rE   r\   c            	          ^  \ rS rSr\R
                  " \" S5      \R                  \R                  " \" S5      SS.S9S9r
\" 5       rU 4S jrS rS	 rS
 rS rS\4S jrU 4S jrS rS rS rS rSrU =r$ )BaseSignupFormi  rg   rh   ri   rk   )ra   
min_lengthrm   c           
      j  > U R                  U5      U l        SU l        [        T
U ]  " U0 UD6  U R
                  S   n[        5       Ul        UR                  R                  [        R                  " UR                  5      5        [        UR                  5      UR                  R                  S'   U R                  R                  S5      nU(       aB  [        [!        S5      US   ["        R$                  " S[!        S5      S	.S
9S9U R
                  S'   U R                  R                  S5      nU(       a  US   (       a2  ['        S5      U R
                  S   l        SU R
                  S   l        O]['        S5      U R
                  S   l        SU R
                  S   l        SU R
                  S   R                  l        OU R
                  S	 U R                  R                  S5      nU(       a  US   (       a2  ['        S5      U R
                  S   l        SU R
                  S   l        O]['        S5      U R
                  S   l        SU R
                  S   l        SU R
                  S   R                  l        OU R
                  S	 U R                  R                  S5      n[/        U5      U l        U(       a3  [3        5       nUR5                  [!        S5      US   S9U R
                  S'   [7        U R                  R9                  5       5      n	[;        U [=        U SS 5      =(       d    U	5        g )NFrh   	maxlengthemail2zEmail (again)rd   r2   zEmail address confirmation)typerj   rk   )ra   rd   rm   EmailTzEmail (optional)rg   zUsername (optional)r   Phonerc   field_order)_get_signup_fields_signup_fieldsaccount_already_existsr5   ru   r~   r    rn   r
   appendMaxLengthValidatorr   rm   rl   rV   r   rX   r   ry   r   ra   rd   is_requiredbool_has_phone_fieldr$   r|   listkeysr!   r   )r>   r   r   username_fieldr   r2   rh   r   r   default_field_orderrB   s             rC   ru   BaseSignupForm.__init__  s   "55f=&+#$)&)Z0$;$=!!!(()).*C*CD	
 47~7P7P3Q##K0$$((2$.(
+ ''()E'F	%DKK! ##''0Z -4W-=G$*04G$--45G-HG$*05G$-:?G$++7G$&&**:6
#07
0CJ'-37J'0078M0NJ'-38J'0=BJ'..:J'##''0 $U!mG#*#;#;j5+< $< $DKK  #4#6#6#;#;#=>'$t4K8K	
rE   c                    [         R                  nSU;   ab  UR                  S5      nU(       d  [        R                  " S5      eUR                  S5      US'   UR                  S5      nU(       a  US   US'   SU;   aB  UR                  S5      nU(       d  [        R                  " S5      eUR                  S5      US'   U$ )	Nemail_requiredr2   z(email required but not listed as a fieldrd   r   username_requiredrh   z+username required but not listed as a field)r#   r   rV   r	   ImproperlyConfiguredrt   )r>   r   signup_fieldsr2   r   rh   s         rC   r   !BaseSignupForm._get_signup_fieldsM  s    $22v%!%%g.E 55>  !'

+; <E*"&&x0F%*:%6z"&($((4H 55A  $*::.A#BHZ rE   c                     U R                   S   nU(       d  U R                  S   S   (       d  U$ [        5       R                  U5      nU$ )Nrh   rd   )rY   r   r$   clean_usernamer>   r   s     rC   r   BaseSignupForm.clean_usernameb  sE    !!*-T00<ZHL,,U3
 rE   c                     U R                   S   R                  5       n[        5       R                  U5      nU(       a  U R	                  U5      nU$ Nr2   )rY   lowerr$   clean_emailvalidate_unique_emailr   s     rC   r   BaseSignupForm.clean_emailm  sE    !!'*002))%0..u5ErE   c                 @    U R                   S   R                  5       nU$ )Nr   )rY   r   r   s     rC   clean_email2BaseSignupForm.clean_email2t  s     !!(+113rE   r   c                 R    [         R                  R                  U5      u  o l        U$ r   )r   manage_emailr   r   )r>   r   r2   s      rC   r   $BaseSignupForm.validate_unique_emailx  s(    -2-?-?-T-T.
** rE   c                 $  > [         TU ]  5       nSU R                  ;   aP  UR                  S5      nUR                  S5      nU(       a'  U(       a   X#:w  a  U R	                  S[        S5      5        SU R                  ;   a  U R                  5         U$ )Nr   r2   z'You must type the same email each time.r   )r5   rU   r   rV   rW   rX   _clean_phone)r>   rY   r2   r   rB   s       rC   rU   BaseSignupForm.clean~  sy    w}t*** $$W-E!%%h/F&eox+T)UVd)))rE   c                    [        5       nU R                  R                  S5      =n(       aV  UR                  U5      nU(       a=  [        R
                  (       d   U R                  SUR                  S   5        gSU l        ggg)zIntentionally NOT `clean_phone()`:
- phone field is optional (depending on ACCOUNT_SIGNUP_FIELDS)
- we don't want to have clean_phone() mistakenly called when a project
  is using a custom signup form with their own `phone` field.
r   phone_takenTN)	r$   rY   rV   get_user_by_phoner#   PREVENT_ENUMERATIONrW   error_messagesr   )r>   r   r   r1   s       rC   r  BaseSignupForm._clean_phone  sn     -%%))'2252,,U3D#77NN7G,B,B=,QR26D/	  3rE   c                 &    U R                  X5        g r   )signup)r>   rf   r1   s      rC   custom_signupBaseSignupForm.custom_signup  s    G"rE   c                 &   U R                   (       ak  U R                  R                  S5      nSnSU R                  ;   a  U R                  R                  S5      n[        R
                  R                  XUS9nSnXT4$ U R                  U5      nSnXT4$ )zTry and save the user. This can fail in case of a conflict on the
email address, in that case we will send an "account already exists"
email and return a standard "email verification sent" response.
r2   Nr   )r2   r   )r   rY   rV   r   r   r  prevent_enumerationsave)r>   rf   r2   r   respr1   s         rC   try_saveBaseSignupForm.try_save  s    
 && %%))'2EE$---))--g6<<33GPU3VDD z 99W%DDzrE   c                 6   U R                   R                  S5      nU R                  (       a  [        U5      e[	        5       nUR                  U5      nUR                  XU 5        U R                  X5        [        XU(       a  [        US9/5        U$ / 5        U$ )Nr2   )r2   )
rY   rV   r   r   r$   new_user	save_userr  r(   r%   )r>   rf   r2   r   r1   s        rC   r  BaseSignupForm.save  s    !!%%g.&&U##-('.7)uE)B(CU SUUrE   )r   r   r   )rG   rH   rI   rJ   r   rz   rX   r#   USERNAME_MIN_LENGTHry   rh   r   r2   ru   r   r   r   r   r   r   rU   r  r  r  r  rK   rL   rM   s   @rC   r   r     s    
m33"#J-L
H LE:
x*	c 
7#&
 
rE   r   c                   @   ^  \ rS rSrU 4S jrU 4S jrU 4S jrSrU =r$ )
SignupFormi  c           
        > UR                  SS5      U l        [        TU ]  " U0 UD6  U R                  R                  S5      nU R                  (       ds  U(       al  [        [        S5      S[        R                  " 5       US   S9U R                  S'   SU R                  ;   a$  [        [        S	5      SUS   S
9U R                  S'   [        U S5      (       a  [        X R                  5        [        R                  nU(       a:  [         R"                  " SS[         R$                  " SSSS.S9S9U R                  U'   g g )N
by_passkeyFrR   r^   znew-passwordrd   )ra   rb   r   rd   rS   Password (again))ra   rb   rd   r    z$position: absolute; right: -99999px;z-1nope)styletabindexrb   rk   )rd   ra   rm   )rt   r  r5   ru   r   rV   r   rX   r   "password_validators_help_text_htmlr~   hasattrr!   r   r#   SIGNUP_FORM_HONEYPOT_FIELDr   rz   ry   )r>   r   r   password1_fieldhoneypot_field_namerB   s        rC   ru   SignupForm.__init__  s    **\59$)&)--11+>?'4
m+-PPR(4	(DKK$ d111+8./!/,Z8,K( 4'' '7'78*EE/4!G$((.
0DKK+, rE   c                    > [         R                  nU(       a5  U R                  U   (       a!  Sn[        5       nUR	                  US5      nX54$ [
        TU ]  U5      $ )z
override of parent class method that adds additional catching
of a potential bot filling out the honeypot field and returns a
'fake' email verification response if honeypot was filled out
N)r#   r$  rY   r$   respond_email_verification_sentr5   r  )r>   rf   r&  r1   r   r  rB   s         rC   r  SignupForm.try_save  s[     +EE  !45%- >>wMz!w((rE   c                   > [         TU ]  5         [        5       nU" 5       n[        X R                  R                  S5      5        [        X R                  R                  S5      5        U R                  R                  S5      nU(       a   [        5       R                  X2S9  SU R                  ;   a[  SU R                  ;   aK  SU R                  ;   a;  U R                  S   U R                  S   :w  a  U R                  S[        S5      5        U R                  $ ! [        R                   a  nU R                  SU5         S nANS nAff = f)Nrh   r2   rR   r0   rS   rT   )r5   rU   r   r+   rY   rV   r*   r$   clean_passwordr   ValidationErrorrW   r   rX   )r>   User
dummy_userrr   erB   s        rC   rU   SignupForm.clean  s   
 V
j"3"3"7"7
"CD:0044W=>$$((5/,,X,G
 4...t000t000  -1B1B;1OOBC     (( /{A../s   D E
.EE
)r  )	rG   rH   rI   rJ   ru   r  rU   rK   rL   rM   s   @rC   r  r    s    !F)&! !rE   r  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )UserFormi  c                 :   > Xl         [        [        U ]  " U0 UD6  g r   )r1   r5   r3  ru   )r>   r1   r   r   rB   s       rC   ru   UserForm.__init__  s    	h&77rE   r0   r   )rG   rH   rI   rJ   ru   rK   rL   rM   s   @rC   r3  r3    s    8 8rE   r3  c                   ,    \ rS rSr\" SS9rS rS rSrg)AddEmailFormi  Tro   c                 J   SSK Jn  U R                  S   R                  5       n[	        5       nUR                  U5      n[        U5      nU Vs/ s H*  oUR                  U R                  R                  :X  d  M(  UPM,     nnU Vs/ s H*  oUR                  U R                  R                  :w  d  M(  UPM,     nnU(       a  UR                  S5      eU(       a;  [        R                  (       a&  [        R                  (       d  UR                  S5      e[        R                  R                  U R                  5      (       d   UR                  S[        R                   5      eUR"                  R%                  U R                  R&                  UU R                  S9  U$ s  snf s  snf )Nr   )signalsr2   duplicate_emailemail_takenmax_email_addresses)senderr2   r1   )allauth.accountr9  rY   r   r$   r   r'   pkr1   r   r#   UNIQUE_EMAILr  r%   r9   can_add_emailMAX_EMAIL_ADDRESSES
_add_emailsendrB   )r>   r9  r   r   usersuon_this_accounton_diff_accounts           rC   r   AddEmailForm.clean_email  sA   +!!'*002-##E*%e,&+Detttyy||/C1eD&+Detttyy||/C1eD**+<== ))!55**=99##11$))<<**%|'G'G  	99&& 	  	

 1 EDs   'F9F'F 0F c                    [         R                  (       aB  [        U R                  U R                  S   S9n[
        R                  R                  X5        U$ [         R                  (       a7  [        R                  R                  XR                  U R                  S   5      $ [        R                  R                  XR                  U R                  S   SS9$ )Nr2   r   T)confirm)r#   "EMAIL_VERIFICATION_BY_CODE_ENABLEDr%   r1   rY   r   email_verification"send_verification_email_to_addressCHANGE_EMAILr9   add_new_email	add_email)r>   rf   email_addresss      rC   r  AddEmailForm.save;  s    ::(YYd&7&7&@M $$GG ! &&''55D$5$5g$>  ##--YY 1 1' :D . 
 	
rE   rF   N)	rG   rH   rI   rJ   r   r2   r   r  rK   rF   rE   rC   r7  r7    s    %EB
rE   r7  c                   ~   ^  \ rS rSr\" \" S5      SS9r\" \" S5      S9r\" \" S5      S9r	U 4S jr
S	 rS
 rSrU =r$ )ChangePasswordFormiM  zCurrent Passwordr_   r`   New Passwordra   New Password (again)c                 j   > [         [        U ]
  " U0 UD6  U R                  U R                  S   l        g NrR   )r5   rU  ru   r1   r~   r>   r   r   rB   s      rC   ru   ChangePasswordForm.__init__T  s-     $0$A&A(,		K %rE   c                     U R                   R                  U R                  R                  S5      5      (       d  [	        5       R                  S5      eU R                  S   $ )Noldpasswordenter_current_password)r1   check_passwordrY   rV   r$   r   r>   s    rC   clean_oldpassword$ChangePasswordForm.clean_oldpasswordX  sM    yy''(9(9(=(=m(LMM-001IJJ  //rE   c                 r    [         R                  R                  U R                  U R                  S   5        g rZ  r   password_changechange_passwordr1   rY   ra  s    rC   r  ChangePasswordForm.save]  '    --dii9J9J;9WXrE   rF   )rG   rH   rI   rJ   r   rX   r^  r   rR   rS   ru   rb  r  rK   rL   rM   s   @rC   rU  rU  M  sP    "#2DK !q'89IA&<$=>I20
Y YrE   rU  c                   ^   ^  \ rS rSr\" \" S5      S9r\" \" S5      S9rU 4S jr	S r
SrU =r$ )SetPasswordFormia  r^   rW  r  c                 j   > [         [        U ]
  " U0 UD6  U R                  U R                  S   l        g rZ  )r5   rk  ru   r1   r~   r[  s      rC   ru   SetPasswordForm.__init__e  s,    ot-t>v>(,		K %rE   c                 r    [         R                  R                  U R                  U R                  S   5        g rZ  re  ra  s    rC   r  SetPasswordForm.savei  ri  rE   rF   rG   rH   rI   rJ   r   rX   rR   r   rS   ru   r  rK   rL   rM   s   @rC   rk  rk  a  s2     q}5IA&8$9:I2Y YrE   rk  c                   4    \ rS rSr\" SS9rS rS\4S jrSr	g)	ResetPasswordFormim  Tro   c                 *   U R                   S   R                  5       n[        5       R                  U5      n[	        USSS9U l        U R
                  (       d.  [        R                  (       d  [        5       R                  S5      eU R                   S   $ )Nr2   T	is_activeprefer_verifiedunknown_email)	rY   r   r$   r   r'   rE  r#   r  r   r>   r2   s     rC   r   ResetPasswordForm.clean_emailp  sq    !!'*002))%0*5DRVW
zz,"B"B-00AA  ))rE   r   c                 f   U R                   S   n[        R                  (       aK  [        R                  R
                  R                  UU R                  (       a  U R                  S   OS US9  U$ UR                  S[        5      n[        R                  R                  XU R                  U5        U$ )Nr2   r   )rf   r1   r2   token_generator)rY   r#   PASSWORD_RESET_BY_CODE_ENABLEDr   password_reset_by_code PasswordResetVerificationProcessr   rE  rV   default_token_generatorpassword_resetrequest_password_reset)r>   rf   r   r2   r{  s        rC   r  ResetPasswordForm.savex  s    !!'*66((IIRR'+zzdjjmt S  	 %jj):<STO  77

O rE   )rE  N)
rG   rH   rI   rJ   r   r2   r   r   r  rK   rF   rE   rC   rr  rr  m  s    %E* rE   rr  c                   ^   ^  \ rS rSr\" \" S5      S9r\" \" S5      S9rU 4S jr	S r
SrU =r$ )ResetPasswordKeyFormi  rV  rW  rX  c                    > UR                  SS 5      U l        UR                  SS 5      U l        [        TU ]  " U0 UD6  U R                  U R
                  S   l        g )Nr1   temp_keyrR   )rt   r1   r  r5   ru   r~   r[  s      rC   ru   ResetPasswordKeyForm.__init__  sN    JJvt,	

:t4$)&)(,		K %rE   c                 r    [         R                  R                  U R                  U R                  S   5        g rZ  )r   r  reset_passwordr1   rY   ra  s    rC   r  ResetPasswordKeyForm.save  s'    ++DIIt7H7H7UVrE   )r  r1   rp  rM   s   @rC   r  r    s3     q'89IA&<$=>I2W WrE   r  c                   z   ^  \ rS rSr\R
                  " 5       r\R
                  " 5       rSr\	r
S rU 4S jrSrU =r$ )UserTokenFormi  Nc                     [        5       n [        U5      nUR                  R                  US9$ ! [        UR
                  4 a     g f = f)N)r?  )r   r)   r9   rV   r   DoesNotExist)r>   uidb36r.  r?  s       rC   	_get_userUserTokenForm._get_user  sN    	#F+B<<##r#**D--. 		s   #0 A	A	c                 v  > [         [        U ]  5       nUR                  SS 5      nUR                  SS 5      n[	        5       nU(       d  UR                  S5      eU R                  U5      U l        U R                  b+  U R                  R                  U R                  U5      (       d  UR                  S5      eU$ )Nr  keyinvalid_password_reset)
r5   r  rU   rV   r$   r   r  
reset_userr{  check_token)r>   rY   r  r  r   rB   s        rC   rU   UserTokenForm.clean  s    ]D79!!(D1ud+-**+CDD..0??"$*>*>*J*JOOS+
 +
 **+CDDrE   )r  )rG   rH   rI   rJ   r   rz   r  r  r  r  r{  r  rU   rK   rL   rM   s   @rC   r  r    s4    __F
//
CJ-O rE   r  c                   H   ^  \ rS rSr\" \" S5      SS9rU 4S jrS rSr	U =r
$ )ReauthenticateFormi  r^   r_   r`   c                 R   > UR                  S5      U l        [        TU ]  " U0 UD6  g )Nr1   )rt   r1   r5   ru   r[  s      rC   ru   ReauthenticateForm.__init__  s%    JJv&	$)&)rE   c                     U R                   R                  S5      n[        5       R                  U R                  U5      (       d  [        5       R                  S5      eU$ )Nrr   incorrect_password)rY   rV   r$   reauthenticater1   r   )r>   rr   s     rC   r,  !ReauthenticateForm.clean_password  sJ    $$((4}++DIIx@@-001EFFrE   r0   )rG   rH   rI   rJ   r   rX   rr   ru   r,  rK   rL   rM   s   @rC   r  r    s#    1Z=?QRH* rE   r  c                   N   ^  \ rS rSr\" 5       rU 4S jrU 4S jrS rS r	Sr
U =r$ )r   i  c                   > [         TU ]  " U0 UD6  [        R                  [        R
                  ;   U l        [        R                  [        R
                  ;   U l        U R                  (       aI  [        5       nUR                  U R                  (       + S9U R                  S'   SU R                  S   l        U R                  (       a.  U R                  (       d  U R                  R                  S5        g g g )Nro   r   Fr2   )r5   ru   r   rw   r#   rv   
_has_emailr{   
_has_phoner$   r|   r~   rd   rt   r>   r   r   r   rB   s       rC   ru   RequestLoginCodeForm.__init__  s    $)&)%++|/I/II%++|/I/II??!mG#*#;#;!__, $< $DKK  -2DKK ) ??4??KKOOG$ $3?rE   c                    > [         TU ]  5       n[        5       nUR                  S5      nUR                  S5      nU(       a  U(       a  UR	                  S5      eU$ )Nr   r2   select_only_one)r5   rU   r$   rV   r   )r>   rY   r   r   r2   rB   s        rC   rU   RequestLoginCodeForm.clean  sR    w}-  )  )U**+<==rE   c                 p   [        5       nU R                  S   nU(       a  UR                  U5      U l        U R                  (       d&  [        R
                  (       d  UR                  S5      e[        R                  " [        R                  SUR                  5       S9(       d  UR                  S5      eU$ )Nr   unknown_phonerequest_login_codeactionr  r   )r$   rY   r  r   r#   r  r   r   consumer   rf   r   )r>   r   r   s      rC   clean_phone RequestLoginCodeForm.clean_phone  s    -!!'* 2259DJ::l&F&F..??$$(<%++- ../HIIrE   c                 l   [        5       nU R                  S   nU(       a  [        USSS9n[        R                  (       d  U(       d  UR                  S5      e[        R                  " [        R                  SUR                  5       S9(       d  UR                  S5      eU(       a  US   OS U l        U$ )	Nr2   Trt  rw  r  r  r   r   )r$   rY   r'   r#   r  r   r   r  r   rf   r   r   )r>   r   r2   rE  s       rC   r    RequestLoginCodeForm.clean_email  s    -!!'*)%4QUVE33!22?CC$$(<%++- ../HII%*qDJrE   )r  r  r   )rG   rH   rI   rJ   r   r2   ru   rU   r  r   rK   rL   rM   s   @rC   r   r     s#    LE% rE   r   c                      ^  \ rS rSr\R
                  " \" S5      \R                  " \" S5      SS.S9S9rU 4S jr	S r
S	rU =r$ )
BaseConfirmCodeFormi  Codezone-time-coderi   rk   rp   c                 T   > UR                  SS 5      U l        [        TU ]  " U0 UD6  g )Ncode)rt   r  r5   ru   r[  s      rC   ru   BaseConfirmCodeForm.__init__  s'    JJvt,	$)&)rE   c                     U R                   R                  S5      n[        XR                  S9(       d  [	        5       R                  S5      eU$ )Nr  )actualexpectedincorrect_code)rY   rV   r   r  r$   r   )r>   r  s     rC   
clean_codeBaseConfirmCodeForm.clean_code	  s=      $$V, yyA-001ABBrE   )r  )rG   rH   rI   rJ   r   rz   rX   ry   r  ru   r  rK   rL   rM   s   @rC   r  r    s?    ??i"#F)_M
D* rE   r  c                       \ rS rSrSrg)ConfirmLoginCodeFormi  rF   NrG   rH   rI   rJ   rK   rF   rE   rC   r  r        rE   r  c                   @   ^  \ rS rSrSU 4S jjrS\4U 4S jjrSrU =r$ ) ConfirmEmailVerificationCodeFormi  r   c                    > UR                  SS 5      U l        UR                  SS 5      U l        [        TU ]  " U0 UD6  g )Nr1   r2   )rt   r1   r2   r5   ru   r[  s      rC   ru   )ConfirmEmailVerificationCodeForm.__init__  9    JJvt,	ZZ.
$)&)rE   c                 p   > [         TU ]  5       nU(       a  [        U R                  U R                  SS9  U$ )NT)r1   r2   always_raise)r5   r  r   r1   r2   r>   r  rB   s     rC   r  +ConfirmEmailVerificationCodeForm.clean_code  s-    w!# diitzzPTUrE   )r2   r1   r   N	rG   rH   rI   rJ   ru   r   r  rK   rL   rM   s   @rC   r  r        *
C  rE   r  c                       \ rS rSrSrg)ConfirmPasswordResetCodeFormi"  rF   Nr  rF   rE   rC   r  r  "  r  rE   r  c                   @   ^  \ rS rSrSU 4S jjrS\4U 4S jjrSrU =r$ )VerifyPhoneFormi&  r   c                    > UR                  SS 5      U l        UR                  SS 5      U l        [        TU ]  " U0 UD6  g )Nr1   r   )rt   r1   r   r5   ru   r[  s      rC   ru   VerifyPhoneForm.__init__'  r  rE   c                 p   > [         TU ]  5       nU(       a  [        U R                  U R                  SS9  U$ )NT)r  )r5   r  r   r1   r   r  s     rC   r  VerifyPhoneForm.clean_code,  s,    w!# DJJTJrE   )r   r1   r  r  rM   s   @rC   r  r  &  r  rE   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ChangePhoneFormi4  c                    > UR                  SS 5      U l        UR                  SS 5      U l        [        TU ]  " U0 UD6  [        5       nUR                  SS9U R                  S'   g )Nr1   r   Tro   )rt   r1   r   r5   ru   r$   r|   r~   r  s       rC   ru   ChangePhoneForm.__init__5  s\    JJvt,	ZZ.
$)&)-&777FGrE   c                     U R                   S   n[        5       nXR                  :X  a  UR                  S5      e[	        U R
                  U5      U l        U$ )Nr   same_as_current)rY   r$   r   r   r   r1   r   )r>   r   r   s      rC   r  ChangePhoneForm.clean_phone<  sM    !!'*-JJ**+<==&:499e&L#rE   )r   r   r1   )rG   rH   rI   rJ   ru   r  rK   rL   rM   s   @rC   r  r  4  s    G rE   r  c                   :   ^  \ rS rSr\" SS9rU 4S jrS rSrU =r	$ )ChangeEmailFormiE  Tro   c                 T   > UR                  SS 5      U l        [        TU ]  " U0 UD6  g r   )rt   r2   r5   ru   r[  s      rC   ru   ChangeEmailForm.__init__H  s'    ZZ.
$)&)rE   c                     U R                   S   nXR                  :X  a  [        5       R                  S5      e[	        U5      u  ol        U$ )Nr2   r  )rY   r2   r$   r   r   r   rx  s     rC   r   ChangeEmailForm.clean_emailL  sE    !!'*JJ-001BCC-A%-H**rE   )r   r2   )
rG   rH   rI   rJ   r   r2   ru   r   rK   rL   rM   s   @rC   r  r  E  s    %E* rE   r  N)Ytypingr   djangor   django.contrib.authr   r   r   django.contrib.auth.tokensr   django.corer	   r
   django.template.exceptionsr   django.template.loaderr   django.urlsr   r   django.utils.safestringr   django.utils.translationr   r   rX   r   allauth.account.app_settingsr   allauth.account.fieldsr   r   r   allauth.account.internalr   +allauth.account.internal.flows.manage_emailr   r   1allauth.account.internal.flows.phone_verificationr   %allauth.account.internal.flows.signupr   allauth.corer   r   allauth.core.internal.cryptokitr   allauth.core.internal.httpkitr   allauth.utilsr    r!   r  r#   r   r$   modelsr%   r&   utilsr'   r(   r)   r*   r+   r-   PASSWORD_RESET_TOKEN_GENERATORr  rO   Formr\   r   r  r3  r7  rU  rk  rr  r  r  r  r   r  r  r  r  r  r  r  rF   rE   rC   <module>r     s     X X B . ; 3 / - I I 4 N N * S H + = B G    ' 
,G 
 'EEG  C

 CLr+- rjR! R!j8uzz 83
8 3
lY2H Y(	Y/ 	Y

 6W4ejj WEJJ B 55:: 5p%** &	. 	': 	#6 	) ejj "ejj rE   