§
    ¤”j‰  ã                   óÊ   — d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZ ddlmZmZ ddlmZ dd	lmZ  G d
„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )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)Úget_random_stringÚsalted_hmac)ÚRemovedInDjango51Warning)Úgettext_lazyc                   ó6   — e Zd Zed„ ¦   «         Z	 	 dd„Zd„ ZdS )ÚBaseUserManagerc                 ó¼   — |pd}	 |                      ¦   «                              dd¦  «        \  }}|dz   |                     ¦   «         z   }n# t          $ r Y nw xY w|S )zS
        Normalize the email address by lowercasing the domain part of it.
        Ú ú@é   )ÚstripÚrsplitÚlowerÚ
ValueError)ÚclsÚemailÚ
email_nameÚdomain_parts       úl/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/django/contrib/auth/base_user.pyÚnormalize_emailzBaseUserManager.normalize_email   s|   € ð
 �˜ˆð	;Ø&+§k¢k¡m¤m×&:Ò&:¸3ÀÑ&BÔ&BÑ#ˆJ˜ð  Ñ$ {×'8Ò'8Ñ':Ô':Ñ:ˆEˆEøõ ð 	ð 	ð 	ØˆDð	øøøð ˆs   †+A Á
AÁAé
   Ú7abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789c                 óZ   — t          j        dt          d¬¦  «         t          ||¦  «        S )zë
        Generate a random password with the given length and given
        allowed_chars. The default value of allowed_chars does not have "I" or
        "O" or letters and digits that look similar -- just to avoid confusion.
        z5BaseUserManager.make_random_password() is deprecated.é   )ÚcategoryÚ
stacklevel)ÚwarningsÚwarnr   r
   )ÚselfÚlengthÚallowed_charss      r   Úmake_random_passwordz$BaseUserManager.make_random_password&   s8   € õ 	ŒØCÝ-Øð	
ñ 	
ô 	
ð 	
õ
 ! ¨Ñ7Ô7Ð7ó    c                 ó4   —  | j         di | j        j        |i¤ŽS )N© )ÚgetÚmodelÚUSERNAME_FIELD)r&   Úusernames     r   Úget_by_natural_keyz"BaseUserManager.get_by_natural_key7   s$   € ØˆtŒxÐ@Ð@˜4œ:Ô4°hÐ?Ð@Ð@Ð@r*   N)r   r   )Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r)   r1   r,   r*   r   r   r      s]   € € € € € Øðð ñ „[ðð ØOð8ð 8ð 8ð 8ð"Að Að Að Að Ar*   r   c                   óT  ‡ — e Zd Z ej         ed¦  «        d¬¦  «        Z ej         ed¦  «        dd¬¦  «        ZdZ	g Z
dZ G d„ d	¦  «        Zd
„ Zˆ fd„Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zed„ ¦   «         Zed„ ¦   «         Zˆ xZ S )ÚAbstractBaseUserÚpasswordé€   )Ú
max_lengthz
last loginT)ÚblankÚnullNc                   ó   — e Zd ZdZdS )úAbstractBaseUser.MetaTN)r2   r3   r4   Úabstractr,   r*   r   ÚMetar>   G   s   € € € € € Øˆˆˆr*   r@   c                 ó*   — |                       ¦   «         S ©N©Úget_username©r&   s    r   Ú__str__zAbstractBaseUser.__str__J   s   € Ø× Ò Ñ"Ô"Ð"r*   c                 óŽ   •—  t          ¦   «         j        |i |¤Ž | j        �#t          j        | j        | ¦  «         d | _        d S d S rB   )ÚsuperÚsaveÚ	_passwordr   Úpassword_changed)r&   ÚargsÚkwargsÚ	__class__s      €r   rI   zAbstractBaseUser.saveM   sN   ø€ Ø�‰ŒŒ�dÐ%˜fÐ%Ð%Ð%ØŒ>Ð%ÝÔ0°´ÀÑFÔFÐFØ!ˆDŒNˆNˆNð &Ð%r*   c                 ó,   — t          | | j        ¦  «        S )z"Return the username for this User.)Úgetattrr/   rE   s    r   rD   zAbstractBaseUser.get_usernameS   s   € å�t˜TÔ0Ñ1Ô1Ð1r*   c                 ó|   — t          | | j        |                      |                      ¦   «         ¦  «        ¦  «         d S rB   )Úsetattrr/   Únormalize_usernamerD   rE   s    r   ÚcleanzAbstractBaseUser.cleanW   s7   € Ý��dÔ)¨4×+BÒ+BÀ4×CTÒCTÑCVÔCVÑ+WÔ+WÑXÔXÐXÐXÐXr*   c                 ó,   — |                       ¦   «         fS rB   rC   rE   s    r   Únatural_keyzAbstractBaseUser.natural_keyZ   s   € Ø×!Ò!Ñ#Ô#Ð%Ð%r*   c                 ó   — dS )zj
        Always return False. This is a way of comparing User objects to
        anonymous users.
        Fr,   rE   s    r   Úis_anonymouszAbstractBaseUser.is_anonymous]   s	   € ð ˆur*   c                 ó   — dS )zt
        Always return True. This is a way to tell if the user has been
        authenticated in templates.
        Tr,   rE   s    r   Úis_authenticatedz!AbstractBaseUser.is_authenticatede   s	   € ð ˆtr*   c                 ó<   — t          |¦  «        | _        || _        d S rB   )r   r8   rJ   )r&   Úraw_passwords     r   Úset_passwordzAbstractBaseUser.set_passwordm   s   € Ý% lÑ3Ô3ˆŒØ%ˆŒˆˆr*   c                 ó:   ‡ — ˆ fd„}t          |‰ j        |¦  «        S )z~
        Return a boolean of whether the raw_password was correct. Handles
        hashing formats behind the scenes.
        c                 ón   •— ‰                      | ¦  «         d ‰_        ‰                     dg¬¦  «         d S ©Nr8   )Úupdate_fields)r]   rJ   rI   ©r\   r&   s    €r   Úsetterz/AbstractBaseUser.check_password.<locals>.setterw   s:   ø€ Ø×Ò˜lÑ+Ô+Ð+à!ˆDŒNØ�IŠI Z LˆIÑ1Ô1Ð1Ð1Ð1r*   )r   r8   ©r&   r\   rc   s   `  r   r   zAbstractBaseUser.check_passwordq   s2   ø€ ð	2ð 	2ð 	2ð 	2ð 	2õ ˜l¨D¬M¸6ÑBÔBÐBr*   c              ƒ   óJ   ‡ K  — ˆ fd„}t          |‰ j        |¦  «        ƒ d{V —†S )zSee check_password().c              “   ó~   •K  — ‰                      | ¦  «         d ‰_        ‰                     dg¬¦  «        ƒ d {V —† d S r`   )r]   rJ   Úasaverb   s    €r   rc   z0AbstractBaseUser.acheck_password.<locals>.setter‚   sP   øè è € Ø×Ò˜lÑ+Ô+Ð+à!ˆDŒNØ—*’*¨J¨<�*Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r*   N)r   r8   rd   s   `  r   r   z AbstractBaseUser.acheck_password   sH   øè è € ð	9ð 	9ð 	9ð 	9ð 	9õ % \°4´=À&ÑIÔIÐIÐIÐIÐIÐIÐIÐIr*   c                 ó.   — t          d ¦  «        | _        d S rB   )r   r8   rE   s    r   Úset_unusable_passwordz&AbstractBaseUser.set_unusable_passwordŠ   s   € å% dÑ+Ô+ˆŒˆˆr*   c                 ó*   — t          | j        ¦  «        S )zX
        Return False if set_unusable_password() has been called for this user.
        )r   r8   rE   s    r   Úhas_usable_passwordz$AbstractBaseUser.has_usable_passwordŽ   s   € õ " $¤-Ñ0Ô0Ð0r*   c                 ó*   — |                       ¦   «         S )z7
        Return an HMAC of the password field.
        )Ú_get_session_auth_hashrE   s    r   Úget_session_auth_hashz&AbstractBaseUser.get_session_auth_hash”   s   € ð ×*Ò*Ñ,Ô,Ð,r*   c              #   óX   K  — t           j        D ]}|                      |¬¦  «        V — Œd S )N)Úsecret)r   ÚSECRET_KEY_FALLBACKSrm   )r&   Úfallback_secrets     r   Úget_session_auth_fallback_hashz/AbstractBaseUser.get_session_auth_fallback_hashš   sF   è è € Ý'Ô<ð 	Fð 	FˆOØ×-Ò-°_Ð-ÑEÔEÐEÐEÐEÐEð	Fð 	Fr*   c                 óZ   — d}t          || j        |d¬¦  «                             ¦   «         S )NzAdjango.contrib.auth.models.AbstractBaseUser.get_session_auth_hashÚsha256)rp   Ú	algorithm)r   r8   Ú	hexdigest)r&   rp   Úkey_salts      r   rm   z'AbstractBaseUser._get_session_auth_hashž   s7   € ØVˆÝØØŒMØØð	
ñ 
ô 
÷
 Š)‰+Œ+ð	r*   c                 ó4   — 	 | j         S # t          $ r Y dS w xY w)Nr   )ÚEMAIL_FIELDÚAttributeError)r   s    r   Úget_email_field_namez%AbstractBaseUser.get_email_field_name§   s1   € ð	Ø”?Ð"øÝð 	ð 	ð 	Ø�7�7ð	øøøs   ‚	 ‰
–c                 óZ   — t          |t          ¦  «        rt          j        d|¦  «        n|S )NÚNFKC)Ú
isinstanceÚstrÚunicodedataÚ	normalize)r   r0   s     r   rS   z#AbstractBaseUser.normalize_username®   s0   € õ ˜(¥CÑ(Ô(ð�KÔ! &¨(Ñ3Ô3Ð3àð	
r*   rB   )!r2   r3   r4   r	   Ú	CharFieldÚ_r8   ÚDateTimeFieldÚ
last_loginÚ	is_activeÚREQUIRED_FIELDSrJ   r@   rF   rI   rD   rT   rV   ÚpropertyrX   rZ   r]   r   r   ri   rk   rn   rs   rm   r5   r|   rS   Ú__classcell__)rN   s   @r   r7   r7   ;   sâ  ø€ € € € € ØˆvÔ   *¡¤¸#Ð>Ñ>Ô>€HØ%�Ô% a a¨¡o¤o¸TÈÐMÑMÔM€Jà€Ià€Oð €Iðð ð ð ð ñ ô ð ð#ð #ð #ð"ð "ð "ð "ð "ð2ð 2ð 2ðYð Yð Yð&ð &ð &ð ðð ñ „Xðð ðð ñ „Xðð&ð &ð &ðCð Cð Cð	Jð 	Jð 	Jð,ð ,ð ,ð1ð 1ð 1ð-ð -ð -ðFð Fð Fðð ð ð ð ðð ñ „[ðð ð
ð 
ñ „[ð
ð 
ð 
ð 
ð 
r*   r7   )Ú__doc__r�   r$   Údjango.confr   Údjango.contrib.authr   Údjango.contrib.auth.hashersr   r   r   r   Ú	django.dbr	   Údjango.utils.cryptor
   r   Údjango.utils.deprecationr   Údjango.utils.translationr   r„   ÚManagerr   ÚModelr7   r,   r*   r   ú<module>r•      sK  ððð ð
 Ð Ð Ð Ø €€€à  Ð  Ð  Ð  Ð  Ð  Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø =Ð =Ð =Ð =Ð =Ð =Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ð!Að !Að !Að !Að !A�f”nñ !Aô !Að !AðHy
ð y
ð y
ð y
ð y
�v”|ñ y
ô y
ð y
ð y
ð y
r*   