
    h7                         S r SSKrSSKJr  SSKJr  SSKJrJrJ	r	J
r
  SSKJr  SSKJr  SSKJr   " S	 S
\R$                  5      r " S S\R(                  5      rg)zg
This module allows importing AbstractBaseUser even when django.contrib.auth is
not in INSTALLED_APPS.
    N)settings)password_validation)acheck_passwordcheck_passwordis_password_usablemake_password)models)salted_hmac)gettext_lazyc                   *    \ rS rSr\S 5       rS rSrg)BaseUserManager   c                     U=(       d    Sn UR                  5       R                  SS5      u  p#US-   UR                  5       -   nU$ ! [         a     U$ f = f)zC
Normalize the email address by lowercasing the domain part of it.
 @   )striprsplitlower
ValueError)clsemail
email_namedomain_parts       O/var/www/html/env/lib/python3.13/site-packages/django/contrib/auth/base_user.pynormalize_emailBaseUserManager.normalize_email   sg    
 	;&+kkm&:&:3&B#J ${'8'8'::E	  	 		s   "A 
AAc                 R    U R                   " S0 U R                  R                  U0D6$ )N )getmodelUSERNAME_FIELD)selfusernames     r   get_by_natural_key"BaseUserManager.get_by_natural_key$   s#    xx@4::44h?@@    r   N)__name__
__module____qualname____firstlineno__classmethodr   r%   __static_attributes__r   r'   r   r   r      s     Ar'   r   c                   2  ^  \ rS rSr\R
                  " \" S5      SS9r\R                  " \" S5      SSS9r	Sr
/ rSr " S	 S
5      rS rU 4S jrS rS rS r\S 5       r\S 5       rS rS rS rS rS rS rS rSS jr\S 5       r\S 5       r Sr!U =r"$ )AbstractBaseUser(   password   )
max_lengthz
last loginT)blanknullNc                       \ rS rSrSrSrg)AbstractBaseUser.Meta4   Tr   N)r(   r)   r*   r+   abstractr-   r   r'   r   Metar7   4   s    r'   r:   c                 "    U R                  5       $ Nget_usernamer#   s    r   __str__AbstractBaseUser.__str__7   s      ""r'   c                    > [         TU ]  " U0 UD6  U R                  b)  [        R                  " U R                  U 5        S U l        g g r<   )supersave	_passwordr   password_changed)r#   argskwargs	__class__s      r   rD   AbstractBaseUser.save=   s>    d%f%>>%00F!DN &r'   c                 ,    [        X R                  5      $ )z"Return the username for this User.)getattrr"   r?   s    r   r>   AbstractBaseUser.get_usernameC   s    t0011r'   c                 j    [        X R                  U R                  U R                  5       5      5        g r<   )setattrr"   normalize_usernamer>   r?   s    r   cleanAbstractBaseUser.cleanG   s&    ))4+B+B4CTCTCV+WXr'   c                 $    U R                  5       4$ r<   r=   r?   s    r   natural_keyAbstractBaseUser.natural_keyJ   s    !!#%%r'   c                     g)zR
Always return False. This is a way of comparing User objects to
anonymous users.
Fr   r?   s    r   is_anonymousAbstractBaseUser.is_anonymousM   s     r'   c                     g)z\
Always return True. This is a way to tell if the user has been
authenticated in templates.
Tr   r?   s    r   is_authenticated!AbstractBaseUser.is_authenticatedU   s     r'   c                 0    [        U5      U l        Xl        g r<   )r   r1   rE   )r#   raw_passwords     r   set_passwordAbstractBaseUser.set_password]   s    %l3%r'   c                 >   ^  U 4S jn[        UT R                  U5      $ )zf
Return a boolean of whether the raw_password was correct. Handles
hashing formats behind the scenes.
c                 V   > TR                  U 5        S Tl        TR                  S/S9  g Nr1   )update_fields)r^   rE   rD   r]   r#   s    r   setter/AbstractBaseUser.check_password.<locals>.setterg   s(    l+!DNIIZLI1r'   )r   r1   r#   r]   re   s   `  r   r   AbstractBaseUser.check_passworda   s    	2 lDMM6BBr'   c                 Z   ^ #    U 4S jn[        UT R                  U5      I Sh  vN $  N7f)zSee check_password().c                 r   >#    TR                  U 5        S Tl        TR                  S/S9I S h  vN   g  N7frb   )r^   rE   asaverd   s    r   re   0AbstractBaseUser.acheck_password.<locals>.setterr   s1     l+!DN**J<*888s   ,757N)r   r1   rg   s   `  r   r    AbstractBaseUser.acheck_passwordo   s&     	9 %\4==&IIIIs   !+)+c                 $    [        S 5      U l        g r<   )r   r1   r?   s    r   set_unusable_password&AbstractBaseUser.set_unusable_passwordz   s    %d+r'   c                 ,    [        U R                  5      $ )zH
Return False if set_unusable_password() has been called for this user.
)r   r1   r?   s    r   has_usable_password$AbstractBaseUser.has_usable_password~   s     "$--00r'   c                 "    U R                  5       $ )z'
Return an HMAC of the password field.
)_get_session_auth_hashr?   s    r   get_session_auth_hash&AbstractBaseUser.get_session_auth_hash   s     **,,r'   c              #   \   #    [         R                   H  nU R                  US9v   M     g 7f)N)secret)r   SECRET_KEY_FALLBACKSru   )r#   fallback_secrets     r   get_session_auth_fallback_hash/AbstractBaseUser.get_session_auth_fallback_hash   s)     '<<O--_-EE  =s   *,c                 N    Sn[        UU R                  USS9R                  5       $ )NzAdjango.contrib.auth.models.AbstractBaseUser.get_session_auth_hashsha256)ry   	algorithm)r
   r1   	hexdigest)r#   ry   key_salts      r   ru   'AbstractBaseUser._get_session_auth_hash   s-    VMM	

 )+	r'   c                 <     U R                   $ ! [         a     gf = f)Nr   )EMAIL_FIELDAttributeError)r   s    r   get_email_field_name%AbstractBaseUser.get_email_field_name   s#    	??" 		s    
c                 ^    [        U[        5      (       a  [        R                  " SU5      $ U$ )NNFKC)
isinstancestrunicodedata	normalize)r   r$   s     r   rP   #AbstractBaseUser.normalize_username   s2     (C(( !!&(3	
 	
r'   )rE   r1   r<   )#r(   r)   r*   r+   r	   	CharField_r1   DateTimeField
last_login	is_activeREQUIRED_FIELDSrE   r:   r@   rD   r>   rQ   rT   propertyrW   rZ   r^   r   r   ro   rr   rv   r|   ru   r,   r   rP   r-   __classcell__)rI   s   @r   r/   r/   (   s    *#>H%%aoTMJIO I #"2Y&    &C	J,1-F   
 
r'   r/   )__doc__r   django.confr   django.contrib.authr   django.contrib.auth.hashersr   r   r   r   	django.dbr	   django.utils.cryptor
   django.utils.translationr   r   Managerr   Modelr/   r   r'   r   <module>r      sN   
    3   + 6Afnn A&|
v|| |
r'   