Ë
    ¹ûàg.  ã                   óð   — 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 dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d„ Zd„ Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)é    )Úpartial)Úurlparse)Úsettings)Úauth)ÚREDIRECT_FIELD_NAMEÚload_backend)ÚRemoteUserBackend)Úredirect_to_login)ÚImproperlyConfigured)Úresolve_url)ÚMiddlewareMixin)ÚSimpleLazyObjectc                 óf   — t        | d«      st        j                  | «      | _        | j                  S )NÚ_cached_user)Úhasattrr   Úget_userr   ©Úrequests    ú\/var/www/skyplay_api_hub/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_view2   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.)r-   r   Ú	LOGIN_URLr   Ústr)r"   r/   r4   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)r-   r9   )r"   r/   s     r   Úget_redirect_field_namez/LoginRequiredMiddleware.get_redirect_field_nameE   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   r7   r   Úget_full_pathr
   r:   )	r"   r   r/   ÚpathÚresolved_login_urlÚlogin_schemeÚlogin_netlocÚcurrent_schemeÚcurrent_netlocs	            r   r.   z,LoginRequiredMiddleware.handle_no_permissionH   s—   € Ø×)Ñ)Ó+ˆÜ(¨×);Ñ);¸IÓ)FÓGÐô &.Ð.@Ó%AÀ"À1Ð%EÑ"ˆ�lÜ)1°$«¸¸Ð);Ñ&ˆ˜Ù °Ò >Ù °Ò >à×(Ñ(Ó*ˆDä ØØØ×(Ñ(¨Ó3ó
ð 	
r   N)
r$   r%   r&   Ú__doc__r   r9   r2   r7   r:   r.   r'   r   r   r)   r)   )   s$   „ ñð .Ðò=òòSó
r   r)   c                   ó*   — e Zd ZdZdZdZd„ Zd„ Zd„ Zy)ÚRemoteUserMiddlewareaý  
    Middleware for utilizing web-server-provided authentication.

    If request.user is not authenticated, then this middleware attempts to
    authenticate the username passed in the ``REMOTE_USER`` request header.
    If authentication is successful, the user is automatically logged in to
    persist the user in the session.

    The header used is configurable and defaults to ``REMOTE_USER``.  Subclass
    this class and change the ``header`` attribute if you need to use a
    different header.
    ÚREMOTE_USERTc                 ó  — 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!   zç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!   r,   Ú_remove_invalid_userÚget_usernameÚclean_usernamer   ÚauthenticateÚlogin)r"   r   Úusernamer!   s       r   r#   z$RemoteUserMiddleware.process_requesto   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                 ó®   — |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   rQ   ÚAttributeError)r"   rT   r   Úbackend_strÚbackends        r   rQ   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   rV   Ú
isinstancer	   ÚlogoutÚImportError)r"   r   Ústored_backends      r   rO   z)RemoteUserMiddleware._remove_invalid_user£   sf   € ð
		%Ü)Ø—‘×#Ñ#¤D×$<Ñ$<¸bÓAóˆNô ˜.Ô*;Ô<Ü—‘˜GÕ$ð =øô	 ò 	!ä�K‰K˜Ö ð	!ús   ‚3A ÁA=Á<A=N)	r$   r%   r&   rE   rL   rN   r#   rQ   rO   r'   r   r   rG   rG   [   s$   „ ñð  €FØ $Ðò%&òNó%r   rG   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 header (``REMOTE_USER``) is not found in the request. Useful
    for setups when the external authentication via ``REMOTE_USER``
    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&   rE   rN   r'   r   r   rb   rb   ´   s   „ ñð !&Ñr   rb   N)Ú	functoolsr   Úurllib.parser   Údjango.confr   Údjango.contribr   Údjango.contrib.authr   r   Údjango.contrib.auth.backendsr	   Údjango.contrib.auth.viewsr
   Údjango.core.exceptionsr   Údjango.shortcutsr   Údjango.utils.deprecationr   Údjango.utils.functionalr   r   r   r   r)   rG   rb   r'   r   r   ú<module>rn      se   ðÝ Ý !å  Ý ß AÝ :Ý 7Ý 7Ý (Ý 4Ý 4ò ò!ô0˜ô 0ô/
˜oô /
ôdV%˜?ô V%ôr&Ð%9õ &r   