Ë
    ñ%9j².  ã                   ó  — d dl Z d dl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mZ d dl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„ Zd„ Z G d„ de«      Z G d„ de«      Z  G d„ d«      Z! G d„ de!«      Z"y)é    N)Úpartial)Úurlsplit)ÚiscoroutinefunctionÚmarkcoroutinefunctionÚsync_to_async)Úsettings)Úauth)ÚREDIRECT_FIELD_NAMEÚload_backend)ÚRemoteUserBackend)Úredirect_to_login)ÚImproperlyConfigured)Úresolve_url)ÚMiddlewareMixinÚRemovedInDjango61Warning)ÚSimpleLazyObjectc                 óf   — t        | d«      st        j                  | «      | _        | j                  S )NÚ_cached_user)Úhasattrr	   Úget_userr   ©Úrequests    úZ/var/www/html/truck-me/venv/lib/python3.12/site-packages/django/contrib/auth/middleware.pyr   r      s)   € Ü�7˜NÔ+Ü#Ÿ}™}¨WÓ5ˆÔØ×ÑÐó    c              ƒ   ó‚   K  — t        | d«      s"t        j                  | «      ƒ d {  –—† | _        | j                  S 7 Œ­w)NÚ_acached_user)r   r	   Ú	aget_userr   r   s    r   Úauserr      s5   è ø€ Ü�7˜OÔ,Ü&*§n¡n°WÓ&=× =ˆÔØ× Ñ Ð ð !>ús   ‚%?§=¨?c                   ó   — e Zd Zd„ Zy)ÚAuthenticationMiddlewarec                 ó„   ‡— t        ‰d«      st        d«      ‚t        ˆfd„«      ‰_        t	        t
        ‰«      ‰_        y )NÚsessionzñThe Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE setting to insert 'django.contrib.sessions.middleware.SessionMiddleware' before 'django.contrib.auth.middleware.AuthenticationMiddleware'.c                  ó   •— t        ‰ «      S ©N)r   r   s   €r   ú<lambda>z:AuthenticationMiddleware.process_request.<locals>.<lambda>(   s   ø€ ´¸Ó0A€ r   )r   r   r   Úuserr   r   ©Úselfr   s    `r   Úprocess_requestz(AuthenticationMiddleware.process_request   s=   ø€ Ü�w 	Ô*Ü&ðMóð ô (Ó(AÓBˆŒÜ¤ wÓ/ˆ�r   N)Ú__name__Ú
__module__Ú__qualname__r)   © r   r   r    r       s   „ ó
0r   r    c                   ó,   — e Zd ZdZeZd„ Zd„ Zd„ Zd„ Z	y)ÚLoginRequiredMiddlewarez›
    Middleware that redirects all unauthenticated requests to a login page.

    Views using the login_not_required decorator will not be redirected.
    c                 óp   — |j                   j                  ry t        |dd«      sy | j                  ||«      S )NÚlogin_requiredT)r&   Úis_authenticatedÚgetattrÚhandle_no_permission)r(   r   Ú	view_funcÚ	view_argsÚview_kwargss        r   Úprocess_viewz$LoginRequiredMiddleware.process_view5   s5   € Ø�<‰<×(Ò(Øä�yÐ"2°DÔ9Øà×(Ñ(¨°)Ó<Ð<r   c                 óp   — t        |dd «      xs t        j                  }|st        d«      ‚t	        |«      S )NÚ	login_urlz�No login URL to redirect to. Define settings.LOGIN_URL or provide a login_url via the 'django.contrib.auth.decorators.login_required' decorator.)r3   r   Ú	LOGIN_URLr   Ústr)r(   r5   r:   s      r   Úget_login_urlz%LoginRequiredMiddleware.get_login_url>   s<   € Ü˜I {°DÓ9ÒO¼X×=OÑ=Oˆ	ÙÜ&ð-óð ô
 �9‹~Ðr   c                 ó0   — t        |d| j                  «      S )NÚredirect_field_name)r3   r?   )r(   r5   s     r   Úget_redirect_field_namez/LoginRequiredMiddleware.get_redirect_field_nameH   s   € Ü�yÐ"7¸×9QÑ9QÓRÐRr   c                 ó  — |j                  «       }t        | j                  |«      «      }t        |«      d d \  }}t        |«      d d \  }}|r||k(  r|r||k(  r|j	                  «       }t        ||| j                  |«      «      S )Né   )Úbuild_absolute_urir   r=   r   Úget_full_pathr   r@   )	r(   r   r5   ÚpathÚresolved_login_urlÚlogin_schemeÚlogin_netlocÚcurrent_schemeÚcurrent_netlocs	            r   r4   z,LoginRequiredMiddleware.handle_no_permissionK   s—   € Ø×)Ñ)Ó+ˆÜ(¨×);Ñ);¸IÓ)FÓGÐô &.Ð.@Ó%AÀ"À1Ð%EÑ"ˆ�lÜ)1°$«¸¸Ð);Ñ&ˆ˜Ù °Ò >Ù °Ò >à×(Ñ(Ó*ˆDä ØØØ×(Ñ(¨Ó3ó
ð 	
r   N)
r*   r+   r,   Ú__doc__r
   r?   r8   r=   r@   r4   r-   r   r   r/   r/   ,   s$   „ ñð .Ðò=òòSó
r   r/   c                   ó\   ‡ — e Zd ZdZdZdZˆ fd„ZdZdZd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zˆ xZS )ÚRemoteUserMiddlewarea  
    Middleware for utilizing web-server-provided authentication.

    If request.user is not authenticated, then this middleware attempts to
    authenticate the username from the ``REMOTE_USER`` key in ``request.META``,
    an environment variable commonly set by the webserver.

    If authentication is successful, the user is automatically logged in to
    persist the user in the session.

    The ``request.META`` key is configurable and defaults to ``REMOTE_USER``.
    Subclass this class and change the ``header`` attribute if you need to
    use a different key from ``request.META``, for example a HTTP request
    header.
    Tc                 ó˜   •— |€t        d«      ‚|| _        t        |«      | _        | j                  rt	        | «       t
        ‰| �  «        y )Nzget_response must be provided.)Ú
ValueErrorÚget_responser   Úis_asyncr   ÚsuperÚ__init__)r(   rP   Ú	__class__s     €r   rS   zRemoteUserMiddleware.__init__r   sC   ø€ ØÐÜÐ=Ó>Ð>Ø(ˆÔÜ+¨LÓ9ˆŒØ�=Š=Ü! $Ô'Ü‰ÑÕr   ÚREMOTE_USERc                 ó€   — | j                   r| j                  |«      S | j                  |«       | j                  |«      S r$   )rQ   Ú	__acall__r)   rP   r'   s     r   Ú__call__zRemoteUserMiddleware.__call__�   s7   € Ø�=Š=Ø—>‘> 'Ó*Ð*Ø×Ñ˜WÔ%Ø× Ñ  Ó)Ð)r   c                 ó  — t        |d«      st        d«      ‚	 |j                  | j                     }|j                  j                  r?|j                  j                  «       | j                  ||«      k(  ry | j                  |«       t        j                  ||¬«      }|r||_        t        j                  ||«       y y # t        $ r6 | j
                  r'|j                  j                  r| j                  |«       Y y w xY w)Nr&   úçThe Django remote user auth middleware requires the authentication middleware to be installed.  Edit your MIDDLEWARE setting to insert 'django.contrib.auth.middleware.AuthenticationMiddleware' before the RemoteUserMiddleware class.©Úremote_user)r   r   ÚMETAÚheaderÚKeyErrorÚforce_logout_if_no_headerr&   r2   Ú_remove_invalid_userÚget_usernameÚclean_usernamer	   ÚauthenticateÚlogin©r(   r   Úusernamer&   s       r   r)   z$RemoteUserMiddleware.process_request‡   så   € ä�w Ô'Ü&ð:óð ð	Ø—|‘| D§K¡KÑ0ˆHð �<‰<×(Ò(Ø�|‰|×(Ñ(Ó*¨d×.AÑ.AÀ(ÈGÓ.TÒTØð ×)Ñ)¨'Ô2ô × Ñ  °hÔ?ˆÙð  ˆGŒLÜ�J‰J�w Õ%ð	 øô+ ò 	ð ×-Ò-°'·,±,×2OÒ2OØ×)Ñ)¨'Ô2Ùð	ús   ™B? Â?<C>Ã=C>c              ƒ   óÊ  K  — | j                   j                  t        j                  ur€| j                   j                  t        j                  u rZt	        j
                  dt        d¬«        t        | j                  d¬«      |«      ƒ d {  –—†  | j                  |«      ƒ d {  –—† S | j                  |«      ƒ d {  –—†  | j                  |«      ƒ d {  –—† S 7 ŒO7 Œ87 Œ!7 Œ
­w)NzƒSupport for subclasses of RemoteUserMiddleware that override process_request() without overriding aprocess_request() is deprecated.rB   )ÚcategoryÚ
stacklevelT)Úthread_sensitive)	rT   r)   rM   Úaprocess_requestÚwarningsÚwarnr   r   rP   r'   s     r   rW   zRemoteUserMiddleware.__acall__®   sÁ   è ø€ ð �N‰N×*Ñ*Ô2F×2VÑ2VÑVØ—‘×/Ñ/Ô3G×3XÑ3XÑXä�M‰Mðô 2Øõð M”- × 4Ñ 4ÀtÔLÈWÓU×UÐUØ×*Ñ*¨7Ó3×3Ð3Ø×#Ñ# GÓ,×,Ð,Ø×&Ñ& wÓ/×/Ð/ð VøØ3øØ,øØ/úsH   ‚B	C#ÂCÂC#Â$CÂ%C#Â=CÂ>C#ÃC!ÃC#ÃC#ÃC#Ã!C#c              ƒ   óˆ  K  — t        |d«      st        d«      ‚	 |j                  d| j                  z      }|j                  «       ƒ d {  –—† }|j                  r=|j                  «       | j                  ||«      k(  ry | j                  |«      ƒ d {  –—†  t        j                  ||¬«      ƒ d {  –—† }|r&||_        t        j                  ||«      ƒ d {  –—†  y y # t        $ rN | j
                  r?|j                  «       ƒ d {  –—†7  }|j                  r| j                  |«      ƒ d {  –—†7   Y y w xY w7 Œï7 Œ¨7 Œ‹7 Œf­w)Nr&   rZ   ÚHTTP_r[   )r   r   r]   r^   r_   r`   r   r2   Ú_aremove_invalid_userrb   rc   r	   Úaauthenticater&   Úaloginrf   s       r   rl   z%RemoteUserMiddleware.aprocess_requestÀ   s1  è ø€ ä�w Ô'Ü&ð:óð ð
	Ø—|‘| G¨d¯k©kÑ$9Ñ:ˆHð —]‘]“_×$ˆð × Ò Ø× Ñ Ó" d×&9Ñ&9¸(ÀGÓ&LÒLØð ×0Ñ0°Ó9×9Ð9ô ×'Ñ'¨¸XÔF×FˆÙð  ˆGŒLÜ—+‘+˜g tÓ,×,Ñ,ð	 øô1 ò 	ð ×-Ò-Ø$Ÿ]™]›_×,Ð,�Ø×(Ò(Ø×4Ñ4°WÓ=×=Ñ=Ùð	úð %øð :øð Gøð
 -ús‚   ‚E›C  ·EÁ
D:ÁAEÂD<ÂEÂ2D>Â3&EÃE ÃEÃ (D7ÄDÄ	%D7Ä.D1Ä/D7Ä4EÄ6D7Ä7EÄ<EÄ>EÅ Ec                 ó®   — |j                   t        j                     }t        j                  |«      }	 |j	                  |«      }|S # t
        $ r Y |S w xY w)zr
        Allow the backend to clean the username, if the backend defines a
        clean_username method.
        )r"   r	   ÚBACKEND_SESSION_KEYr   rc   ÚAttributeError)r(   rg   r   Úbackend_strÚbackends        r   rc   z#RemoteUserMiddleware.clean_usernameê   s]   € ð
 —o‘o¤d×&>Ñ&>Ñ?ˆÜ×#Ñ# KÓ0ˆð	Ø×-Ñ-¨hÓ7ˆHð ˆøô ò 	ØØˆð	ús   ´A Á	AÁAc                 ó   — 	 t        |j                  j                  t        j                  d«      «      }t        |t        «      rt        j                  |«       yy# t        $ r t        j                  |«       Y yw xY w©z 
        Remove the current authenticated user in the request which is invalid
        but only if the user is authenticated via the RemoteUserBackend.
        Ú N)	r   r"   Úgetr	   ru   Ú
isinstancer   ÚlogoutÚImportError©r(   r   Ústored_backends      r   ra   z)RemoteUserMiddleware._remove_invalid_user÷   sf   € ð
		%Ü)Ø—‘×#Ñ#¤D×$<Ñ$<¸bÓAóˆNô ˜.Ô*;Ô<Ü—‘˜GÕ$ð =øô	 ò 	!ä�K‰K˜Ö ð	!ús   ‚3A ÁA=Á<A=c              ƒ   óB  K  — 	 t        |j                  j                  t        j                  d«      ƒ d{  –—† «      }t        |t        «      rt        j                  |«      ƒ d{  –—†  yy7 Œ77 Œ# t        $ r! t        j                  |«      ƒ d{  –—†7   Y yw xY w­wrz   )	r   r"   Úagetr	   ru   r}   r   Úalogoutr   r€   s      r   rq   z*RemoteUserMiddleware._aremove_invalid_user  s„   è ø€ ð
		,Ü)Ø—o‘o×*Ñ*¬4×+CÑ+CÀRÓH×HóˆNô ˜.Ô*;Ô<Ü—l‘l 7Ó+×+Ñ+ð =ð Iøð ,ùô ò 	(ä—,‘,˜wÓ'×'Ó'ð	(üsU   ‚B„2A2 ¶A.·A2 ¿(BÁ'A0Á(BÁ.A2 Á0BÁ2!BÂBÂBÂBÂBÂB)r*   r+   r,   rK   Úsync_capableÚasync_capablerS   r^   r`   rX   r)   rW   rl   rc   ra   rq   Ú__classcell__)rT   s   @r   rM   rM   ^   sK   ø„ ñð  €LØ€Môð €FØ $Ðò*ò%&òN0ò$(-òTò%ö ,r   rM   c                   ó   — e Zd ZdZdZy)ÚPersistentRemoteUserMiddlewarea‹  
    Middleware for web-server provided authentication on logon pages.

    Like RemoteUserMiddleware but keeps the user authenticated even if
    the ``request.META`` key is not found in the request. Useful for
    setups when the external authentication is only expected to happen
    on some "logon" URL and the rest of the application wants to use
    Django's authentication mechanism.
    FN)r*   r+   r,   rK   r`   r-   r   r   r‰   r‰     s   „ ñð !&Ñr   r‰   )#rm   Ú	functoolsr   Úurllib.parser   Úasgiref.syncr   r   r   Údjango.confr   Údjango.contribr	   Údjango.contrib.authr
   r   Údjango.contrib.auth.backendsr   Údjango.contrib.auth.viewsr   Údjango.core.exceptionsr   Údjango.shortcutsr   Údjango.utils.deprecationr   r   Údjango.utils.functionalr   r   r   r    r/   rM   r‰   r-   r   r   ú<module>r–      sl   ðÛ Ý Ý !ç RÑ Rå  Ý ß AÝ :Ý 7Ý 7Ý (ß NÝ 4ò ò!ô0˜ô 0ô/
˜oô /
÷dw,ñ w,ôt&Ð%9õ &r   