Ë
    ‘ïŒh¬  ã                   óš   — 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
 d dlmZ d„ Zd„ Zd	„ Zd
„ Z G d„ de«      Zd„ Z G d„ de
«      Zy)é    )Úsettings)Útimezone)Ú
exceptionsÚserializers)Ú	CSRFCheck)ÚJWTAuthentication)ÚTokenRefreshSerializerc                 ó  — ddl m} t        t        dd «      }t	        j
                  «       |j                  z   }t        t        dd«      }t        t        dd«      }t        t        dd	«      }|r| j                  ||||||¬
«       y y )Nr   ©Úapi_settingsÚJWT_AUTH_COOKIEÚJWT_AUTH_SECUREFÚJWT_AUTH_HTTPONLYTÚJWT_AUTH_SAMESITEÚLax)ÚexpiresÚsecureÚhttponlyÚsamesite)Ú!rest_framework_simplejwt.settingsr   Úgetattrr   r   ÚnowÚACCESS_TOKEN_LIFETIMEÚ
set_cookie)ÚresponseÚaccess_tokenÚjwt_settingsÚcookie_nameÚaccess_token_expirationÚcookie_secureÚcookie_httponlyÚcookie_samesites           úX/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/dj_rest_auth/jwt_auth.pyÚset_jwt_access_cookier$   	   s…   € ÝNÜœ(Ð$5°tÓ<€KÜ'Ÿ|™|›~°×0RÑ0RÑRÐÜœHÐ&7¸Ó?€MÜœhÐ(;¸TÓB€OÜœhÐ(;¸UÓC€OáØ×ÑØØØ+Ø Ø$Ø$ð 	õ 	
ð ó    c           	      ó2  — ddl m} t        j                  «       |j                  z   }t        t        dd «      }t        t        dd«      }t        t        dd«      }t        t        dd	«      }t        t        d
d«      }|r| j                  |||||||¬«       y y )Nr   r   ÚJWT_AUTH_REFRESH_COOKIEÚJWT_AUTH_REFRESH_COOKIE_PATHú/r   Fr   Tr   r   )r   r   r   r   Úpath)r   r   r   r   ÚREFRESH_TOKEN_LIFETIMEr   r   r   )	r   Úrefresh_tokenr   Úrefresh_token_expirationÚrefresh_cookie_nameÚrefresh_cookie_pathr    r!   r"   s	            r#   Úset_jwt_refresh_cookier0      s™   € ÝNÜ (§¡£°×1TÑ1TÑ TÐÜ!¤(Ð,EÀtÓLÐÜ!¤(Ð,JÈCÓPÐÜœHÐ&7¸Ó?€MÜœhÐ(;¸TÓB€OÜœhÐ(;¸UÓC€OáØ×ÑØØØ,Ø Ø$Ø$Ø$ð 	õ 	
ð r%   c                 ó4   — t        | |«       t        | |«       y )N)r$   r0   )r   r   r,   s      r#   Úset_jwt_cookiesr2   1   s   € Ü˜( LÔ1Ü˜8 ]Õ3r%   c                 ó¼   — t        t        dd «      }t        t        dd «      }t        t        dd«      }|r| j                  |«       |r| j                  ||¬«       y y )Nr   r'   r(   r)   )r*   )r   r   Údelete_cookie)r   r   r.   r/   s       r#   Úunset_jwt_cookiesr5   6   s_   € Üœ(Ð$5°tÓ<€KÜ!¤(Ð,EÀtÓLÐÜ!¤(Ð,JÈCÓPÐáØ×Ñ˜{Ô+ÙØ×ÑÐ2Ð9LÐÕMð r%   c                   óL   ‡ — e Zd Z ej                  dd¬«      Zd„ Zˆ fd„Zˆ xZS )ÚCookieTokenRefreshSerializerFzWIll override cookie.)ÚrequiredÚ	help_textc                 ó  — | j                   d   }d|j                  v r!|j                  d   dk7  r|j                  d   S t        t        dd «      }|r)||j                  v r|j                  j                  |«      S ddlm}  |d«      ‚)NÚrequestÚrefreshÚ r'   r   )ÚInvalidTokenzNo valid refresh token found.)ÚcontextÚdatar   r   ÚCOOKIESÚgetÚ#rest_framework_simplejwt.exceptionsr>   )Úselfr;   r   r>   s       r#   Úextract_refresh_tokenz2CookieTokenRefreshSerializer.extract_refresh_tokenD   s|   € Ø—,‘,˜yÑ)ˆØ˜Ÿ™Ñ$¨¯©°iÑ)@ÀBÒ)FØ—<‘< 	Ñ*Ð*ÜœhÐ(AÀ4ÓHˆÙ˜;¨'¯/©/Ñ9Ø—?‘?×&Ñ& {Ó3Ð3åHÙÐ>Ó?Ð?r%   c                 óH   •— | j                  «       |d<   t        ‰| 	  |«      S )Nr<   )rE   ÚsuperÚvalidate)rD   ÚattrsÚ	__class__s     €r#   rH   z%CookieTokenRefreshSerializer.validateO   s&   ø€ Ø×5Ñ5Ó7ˆˆiÑÜ‰wÑ Ó&Ð&r%   )	Ú__name__Ú
__module__Ú__qualname__r   Ú	CharFieldr<   rE   rH   Ú__classcell__)rJ   s   @r#   r7   r7   A   s(   ø„ Ø#ˆk×#Ñ#¨UÐ>UÔV€Gò	@÷'ð 'r%   r7   c                  ó:   ‡— ddl mŠ ddlm}   G ˆfd„d| «      }|S )z7 Returns a Token Refresh CBV without a circular import r   r   )ÚTokenRefreshViewc                   ó&   •‡ — e Zd ZeZˆ ˆfd„Zˆ xZS )ú6get_refresh_view.<locals>.RefreshViewWithCookieSupportc                 ó`  •— |j                   dk(  rUd|j                  v rGt        ||j                  d   «       t        j                  «       ‰j
                  z   |j                  d<   |j                   dk(  r'd|j                  v rt        ||j                  d   «       t        ‰|    ||g|¢­i |¤ŽS )NéÈ   Úaccessr   r<   )	Ústatus_coder@   r$   r   r   r   r0   rG   Úfinalize_response)rD   r;   r   ÚargsÚkwargsrJ   r   s        €€r#   rX   zHget_refresh_view.<locals>.RefreshViewWithCookieSupport.finalize_response\   s—   ø€ Ø×#Ñ# sÒ*¨x¸8¿=¹=Ñ/HÜ% h°·±¸hÑ0GÔHÜ<D¿L¹L»NÈ\×MoÑMoÑ<o—‘Ð7Ñ8Ø×#Ñ# sÒ*¨y¸H¿M¹MÑ/IÜ& x°·±¸yÑ1IÔJÜ‘7Ñ,¨W°hÐPÀÒPÈÑPÐPr%   )rK   rL   rM   r7   Úserializer_classrX   rO   )rJ   r   s   @€r#   ÚRefreshViewWithCookieSupportrS   Y   s   ù„ Ø7Ð÷	Qñ 	Qr%   r\   )r   r   Úrest_framework_simplejwt.viewsrQ   )rQ   r\   r   s     @r#   Úget_refresh_viewr^   T   s    ø€ åNÝ?ö	QÐ'7ô 	Qð (Ð'r%   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚJWTCookieAuthenticationzË
    An authentication plugin that hopefully authenticates requests through a JSON web
    token provided in a request cookie (and through the header as normal, with a
    preference to the header).
    c                 ó–   — t        «       }|j                  |«       |j                  |ddi «      }|rt        j                  d|› «      ‚y)zK
        Enforce CSRF validation for session based authentication.
        N© zCSRF Failed: )r   Úprocess_requestÚprocess_viewr   ÚPermissionDenied)rD   r;   ÚcheckÚreasons       r#   Úenforce_csrfz$JWTCookieAuthentication.enforce_csrfl   sO   € ô “ˆà×Ñ˜gÔ&Ø×#Ñ# G¨T°2°rÓ:ˆÙä×-Ñ-°¸f¸XÐ.FÓGÐGð r%   c                 ó†  — t        t        dd «      }| j                  |«      }|€f|rc|j                  j	                  |«      }t        t        dd«      r| j                  |«       n7|5t        t        dd«      r$| j                  |«       ny | j                  |«      }|€y | j                  |«      }| j                  |«      |fS )Nr   Ú/JWT_AUTH_COOKIE_ENFORCE_CSRF_ON_UNAUTHENTICATEDFÚJWT_AUTH_COOKIE_USE_CSRF)	r   r   Ú
get_headerrA   rB   rh   Úget_raw_tokenÚget_validated_tokenÚget_user)rD   r;   r   ÚheaderÚ	raw_tokenÚvalidated_tokens         r#   Úauthenticatez$JWTCookieAuthentication.authenticatex   s¸   € ÜœhÐ(9¸4Ó@ˆØ—‘ Ó)ˆØˆ>ÙØ#ŸO™O×/Ñ/°Ó<	Üœ8Ð%VÐX]Ô^Ø×%Ñ% gÕ.ØÐ*¬w´xÐA[Ð]bÔ/cØ×%Ñ% gÕ.àà×*Ñ*¨6Ó2ˆIàÐØà×2Ñ2°9Ó=ˆØ}‰}˜_Ó-¨Ð>Ð>r%   N)rK   rL   rM   Ú__doc__rh   rs   rb   r%   r#   r`   r`   f   s   „ ñò

Hó?r%   r`   N)Údjango.confr   Údjango.utilsr   Úrest_frameworkr   r   Úrest_framework.authenticationr   Ú'rest_framework_simplejwt.authenticationr   Ú$rest_framework_simplejwt.serializersr	   r$   r0   r2   r5   r7   r^   r`   rb   r%   r#   ú<module>r{      sK   ðÝ  Ý !ß 2Ý 3Ý EÝ Gò
ò&
ò*4ò
Nô'Ð#9ô 'ò&(ô$%?Ð/õ %?r%   