Ë
    æï7iþ  ã                   ó¢  — U 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 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 ddlmZ ej6                  Z eej6                  eef«      sefZeD � ch c]  } | j?                  e«      ’Œ c} Z e!e"   e#d<    edee«      Z$ G d„ dejJ                  «      Z& G d„ de&«      Z'e'Z(de$de)fd„Z*yc c} w )é    )ÚOptionalÚTypeVar)Úget_user_model)ÚAbstractBaseUser)Úgettext_lazy)ÚHTTP_HEADER_ENCODINGÚauthentication)ÚRequesté   )ÚAuthenticationFailedÚInvalidTokenÚ
TokenError)Ú	TokenUser)Úapi_settings)ÚToken)Úget_md5_hash_passwordÚAUTH_HEADER_TYPE_BYTESÚAuthUserc                   ó¢   ‡ — e Zd ZdZdZdZdˆ fd„Zdedee	e
ef      fd„Zdedefd„Zdedefd	„Zd
edee   fd„Zdedefd„Zdede
fd„Zˆ xZS )ÚJWTAuthenticationzy
    An authentication plugin that authenticates requests through a JSON web
    token provided in a request header.
    Úapizapplication/jsonÚreturnc                 óB   •— t        ‰| �  |i |¤Ž t        «       | _        y ©N)ÚsuperÚ__init__r   Ú
user_model)ÚselfÚargsÚkwargsÚ	__class__s      €úz/home/cursorai/projects/telegram-earn/backend/venv/lib/python3.12/site-packages/rest_framework_simplejwt/authentication.pyr   zJWTAuthentication.__init__$   s   ø€ Ü‰Ñ˜$Ð) &Ò)Ü(Ó*ˆ�ó    Úrequestc                 óš   — | j                  |«      }|€y | j                  |«      }|€y | j                  |«      }| j                  |«      |fS r   )Ú
get_headerÚget_raw_tokenÚget_validated_tokenÚget_user)r   r$   ÚheaderÚ	raw_tokenÚvalidated_tokens        r"   ÚauthenticatezJWTAuthentication.authenticate(   sU   € Ø—‘ Ó)ˆØˆ>Øà×&Ñ& vÓ.ˆ	ØÐØà×2Ñ2°9Ó=ˆà�}‰}˜_Ó-¨Ð>Ð>r#   c                 óH   — dj                  t        d   | j                  «      S )Nz{} realm="{}"r   )ÚformatÚAUTH_HEADER_TYPESÚwww_authenticate_realm)r   r$   s     r"   Úauthenticate_headerz%JWTAuthentication.authenticate_header5   s&   € Ø×%Ñ%Ü˜aÑ Ø×'Ñ'ó
ð 	
r#   c                 ó¢   — |j                   j                  t        j                  «      }t	        |t
        «      r|j                  t        «      }|S )zc
        Extracts the header containing the JSON web token from the given
        request.
        )ÚMETAÚgetr   ÚAUTH_HEADER_NAMEÚ
isinstanceÚstrÚencoder   )r   r$   r*   s      r"   r&   zJWTAuthentication.get_header;   s<   € ð
 —‘×!Ñ!¤,×"?Ñ"?Ó@ˆä�fœcÔ"à—]‘]Ô#7Ó8ˆFàˆr#   r*   c                 óª   — |j                  «       }t        |«      dk(  ry|d   t        vryt        |«      dk7  rt        t	        d«      d¬«      ‚|d   S )zm
        Extracts an unvalidated JSON web token from the given "Authorization"
        header value.
        r   Né   z<Authorization header must contain two space-delimited valuesÚbad_authorization_header©Úcoder   )ÚsplitÚlenr   r   Ú_)r   r*   Úpartss      r"   r'   zJWTAuthentication.get_raw_tokenH   s\   € ð
 —‘“ˆäˆu‹:˜Š?àà�‰8Ô1Ñ1àäˆu‹:˜Š?Ü&ÜÐPÓQØ/ôð ð
 �Q‰xˆr#   r+   c                 ó
  — g }t         j                  D ]  }	  ||«      c S  t        t        d«      |dœ«      ‚# t        $ r@}|j                  |j                  |j
                  |j                  d   dœ«       Y d}~Œjd}~ww xY w)zk
        Validates an encoded JSON web token and returns a validated token
        wrapper object.
        r   )Útoken_classÚ
token_typeÚmessageNz(Given token not valid for any token type)ÚdetailÚmessages)	r   ÚAUTH_TOKEN_CLASSESr   ÚappendÚ__name__rE   r   r   rA   )r   r+   rH   Ú	AuthTokenÚes        r"   r(   z%JWTAuthentication.get_validated_token_   sŽ   € ð
 ˆÜ%×8Ô8ˆIð	Ù  Ó+Ò+ð 9ô äÐFÓGØ$ñó
ð 	
øô ò Ø—‘à'0×'9Ñ'9Ø&/×&:Ñ&:Ø#$§6¡6¨!¡9ñ÷ñ ûðús   —9¹	BÁ6A=Á=Br,   c                 ór  — 	 |t         j                     }	  | j
                  j                  j                  d
i t         j                  |i¤Ž}t         j                  r"|j                  st        t	        d«      d¬«      ‚t         j                  rK|j                  t         j                  «      t        |j                   «      k7  rt        t	        d«      d	¬«      ‚|S # t        $ r}t        t	        d«      «      |‚d}~ww xY w# | j
                  j                  $ r}t        t	        d«      d¬«      |‚d}~ww xY w)zU
        Attempts to find and return a user using the given validated token.
        ú3Token contained no recognizable user identificationNzUser not foundÚuser_not_foundr=   zUser is inactiveÚuser_inactivez%The user's password has been changed.Úpassword_changed© )r   ÚUSER_ID_CLAIMÚKeyErrorr   rA   r   Úobjectsr5   ÚUSER_ID_FIELDÚDoesNotExistr   ÚCHECK_USER_IS_ACTIVEÚ	is_activeÚCHECK_REVOKE_TOKENÚREVOKE_TOKEN_CLAIMr   Úpassword)r   r,   Úuser_idrM   Úusers        r"   r)   zJWTAuthentication.get_userx   s  € ð	Ø%¤l×&@Ñ&@ÑAˆGð	Ø.�4—?‘?×*Ñ*×.Ñ.ÑW´,×2LÑ2LÈgÐ1VÑWˆDô ×,Ò,°T·^²^Ü&¤qÐ);Ó'<À?ÔSÐSä×*Ò*Ø×"Ñ"Ü×/Ñ/óä& t§}¡}Ó5ò6ô +ÜÐ=Ó>ÐEWôð ð ˆøô/ ò 	ÜÜÐGÓHóàðûð	ûð �‰×+Ñ+ò 	Ü&ÜÐ"Ó#Ð*:ôàðûð	ús.   ‚C –6D Ã	C>Ã$C9Ã9C>ÄD6ÄD1Ä1D6)r   N)rK   Ú
__module__Ú__qualname__Ú__doc__r1   Ú
media_typer   r
   r   Útupler   r   r-   r8   r2   Úbytesr&   r'   r(   r)   Ú__classcell__)r!   s   @r"   r   r      sž   ø„ ñð
 #ÐØ#€Jõ+ð? Gð ?°¸¸xÈ¸Ñ9OÑ0Pó ?ð
¨7ð 
°só 
ð 'ð ¨eó ð Eð ¨h°u©oó ð.
¨Uð 
°uó 
ð2¨ð °(÷ r#   r   c                   ó    — e Zd ZdZdedefd„Zy)ÚJWTStatelessUserAuthenticationz¸
    An authentication plugin that authenticates requests through a JSON web
    token provided in a request header without performing a database lookup to obtain a user instance.
    r,   r   c                 óx   — t         j                  |vrt        t        d«      «      ‚t        j                  |«      S )zg
        Returns a stateless user object which is backed by the given validated
        token.
        rO   )r   rT   r   rA   ÚTOKEN_USER_CLASS)r   r,   s     r"   r)   z'JWTStatelessUserAuthentication.get_userž   s6   € ô
 ×%Ñ%¨_Ñ<ô œqÐ!VÓWÓXÐXä×,Ñ,¨_Ó=Ð=r#   N)rK   r`   ra   rb   r   r   r)   rS   r#   r"   rh   rh   ˜   s   „ ñð

>¨ð 
>°(ô 
>r#   rh   r_   r   c                 óL   — | d uxr t         j                   xs | j                  S r   )r   rY   rZ   )r_   s    r"   Ú default_user_authentication_rulerl   ®   s+   € ð �tÐò Ü×-Ñ-Ð-Ò?°·±ðr#   N)+Útypingr   r   Údjango.contrib.authr   Údjango.contrib.auth.modelsr   Údjango.utils.translationr   rA   Úrest_frameworkr   r	   Úrest_framework.requestr
   Ú
exceptionsr   r   r   Úmodelsr   Úsettingsr   Útokensr   Úutilsr   r0   r7   Úlistrd   r9   r   Úsetre   Ú__annotations__r   ÚBaseAuthenticationr   rh   ÚJWTTokenUserAuthenticationÚboolrl   )Úhs   0r"   Ú<module>r      sÛ   ðß $Ð $å .Ý 7Ý 6ß ?Ý *ç FÑ FÝ Ý "Ý Ý (à ×2Ñ2Ð á�,×0Ñ0°4¸°-Ô@Ø*Ð,Ðñ ->ó&Ù,= q€A‡H�HÐ!Õ"Ð,=ñ&Ð ˜˜E™
ó ñ �:Ð/°Ó;€ôz˜×9Ñ9ô zôz>Ð%6ô >ð& <Ð ð
¨8ð 
¸ô 
ùòu&s   Á4C