Ë
    ¯`ÚiW  ã                   óª  — U d dl mZ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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j:                  Z eej:                  ee f«      sefZeD � ch c]  } | jC                  e«      ’Œ c} Z"ee#   e$d<    edee«      Z% G d„ dejL                  «      Z' G d„ de'«      Z(e(Z)de%de*fd„Z+yc c} w )é    )ÚOptionalÚSetÚTupleÚ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      €ú^/var/www/html/acx/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__rG   r!   r   rC   )r    r-   rJ   Ú	AuthTokenÚes        r$   r*   z%JWTAuthentication.get_validated_token_   s“   € ð
 ˆÜ%×8Ñ8ò 
	ˆIð	Ù  Ó+Ò+ð
	ô äÐFÓGØ$ñó
ð 	
øô ò Ø—‘à'0×'9Ñ'9Ø&/×&:Ñ&:Ø#$§6¡6¨!¡9ñ÷ñ ûðús   —9¹	BÁ6A=Á=Br.   c                 ó>  — 	 |t         j                     }	  | j
                  j                  j                  d	i t         j                  |i¤Ž}|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«      «      ‚w xY w# | j
                  j                  $ r t        t	        d«      d¬«      ‚w xY w)
zU
        Attempts to find and return a user using the given validated token.
        ú3Token contained no recognizable user identificationz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   rC   r   Úobjectsr7   ÚUSER_ID_FIELDÚDoesNotExistr   Ú	is_activeÚCHECK_REVOKE_TOKENÚREVOKE_TOKEN_CLAIMr   Úpassword)r    r.   Úuser_idÚusers       r$   r+   zJWTAuthentication.get_userx   s  € ð	YØ%¤l×&@Ñ&@ÑAˆGð	SØ.�4—?‘?×*Ñ*×.Ñ.ÑW´,×2LÑ2LÈgÐ1VÑWˆDð �~Š~Ü&¤qÐ);Ó'<À?ÔSÐSä×*Ò*Ø×"Ñ"Ü×/Ñ/óä& t§}¡}Ó5ò6ô +ÜÐ=Ó>ÐEWôð ð ˆøô' ò 	YÜœqÐ!VÓWÓXÐXð	Yûð
 �‰×+Ñ+ò 	SÜ&¤qÐ)9Ó':ÐAQÔRÐRð	Sús   ‚C –6C, ÃC)Ã,0D)r   N)rM   Ú
__module__Ú__qualname__Ú__doc__r3   Ú
media_typer   r   r   r   r   r   r/   r:   r4   Ú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.
        rQ   )r   rV   r   rC   ÚTOKEN_USER_CLASS)r    r.   s     r$   r+   z'JWTStatelessUserAuthentication.get_userš   s6   € ô
 ×%Ñ%¨_Ñ<ô œqÐ!VÓWÓXÐXä×,Ñ,¨_Ó=Ð=r%   N)rM   ra   rb   rc   r   r   r+   rU   r%   r$   rh   rh   ”   s   „ ñð

>¨ð 
>°(ô 
>r%   rh   r`   r   c                 ó&   — | d uxr | j                   S r   )r[   )r`   s    r$   Ú default_user_authentication_rulerl   ª   s   € ð �tÐÒ. §¡Ð.r%   N),Útypingr   r   r   r   Údjango.contrib.authr   Údjango.contrib.auth.modelsr   Údjango.utils.translationr	   rC   Úrest_frameworkr
   r   Úrest_framework.requestr   Ú
exceptionsr   r   r   Úmodelsr   Úsettingsr   Útokensr   Úutilsr   r2   r9   ÚlistÚtupler;   r   re   Ú__annotations__r   ÚBaseAuthenticationr   rh   ÚJWTTokenUserAuthenticationÚboolrl   )Úhs   0r$   ú<module>r      sÖ   ðß 0Ô 0å .Ý 7Ý 6ß ?Ý *ç FÑ FÝ Ý "Ý Ý (à ×2Ñ2Ð á�,×0Ñ0°4¸°-Ô@Ø*Ð,Ðð ->ö&Ø'(€A‡H�HÐ!Õ"ò&Ð ˜˜E™
ó ñ �:Ð/°Ó;€ôv˜×9Ñ9ô vôr>Ð%6ô >ð& <Ð ð/¨8ð /¸ô /ùòm&s   Á8C