Ë
    üûàg“  ã                   óâ   — d dl mZ d dlmZmZmZmZ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 d dlmZmZ ed„ «       Zedd
„«       Zed„ «       Zd„ Z G d„ de«      Z G d„ de«      Zd„ Zy	)é    )Úsettings)ÚBACKEND_SESSION_KEYÚHASH_SESSION_KEYÚSESSION_KEYÚ_get_backendsÚget_user_modelÚload_backendÚuser_logged_inÚuser_logged_out)Úconstant_time_compare)Ú
LazyObject)Údatabase_sync_to_async)ÚBaseMiddleware)ÚCookieMiddlewareÚSessionMiddlewarec                 óœ  — ddl m} d| vrt        d«      ‚| d   }d}	 t        |«      }|t           }|t
        j                  v rpt        |«      }|j                  |«      }t        |d«      rH|j                  t        «      }|xr t        ||j                  «       «      }|s|j                  «        d}	 |xs  |«       S # t        $ r Y Œw xY w)z�
    Return the user model instance associated with the given scope.
    If no user is retrieved, return an instance of `AnonymousUser`.
    r   ©ÚAnonymousUserÚsessionúQCannot find session in scope. You should wrap your consumer in SessionMiddleware.NÚget_session_auth_hash)Údjango.contrib.auth.modelsr   Ú
ValueErrorÚ_get_user_session_keyr   r   ÚAUTHENTICATION_BACKENDSr	   Úget_userÚhasattrÚgetr   r   r   ÚflushÚKeyError)	Úscoper   r   ÚuserÚuser_idÚbackend_pathÚbackendÚsession_hashÚsession_hash_verifieds	            úK/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/channels/auth.pyr   r      så   € õ 9à˜ÑÜð!ó
ð 	
ð �IÑ€GØ€Dð Ü'¨Ó0ˆØÔ2Ñ3ˆð œ8×;Ñ;Ñ;Ü" <Ó0ˆGØ×#Ñ# GÓ,ˆDä�tÐ4Ô5Ø&Ÿ{™{Ô+;Ó<�Ø(4ò )Ô9NØ  $×"<Ñ"<Ó">ó:Ð%ñ -Ø—M‘M”OØ‘DØÒ"‘=“?Ð"øô ò Ùðús   žB? Â?	CÃ
CNc                 óÖ  — d| vrt        d«      ‚| d   }d}|€| j                  dd«      }|€t        d«      ‚t        |d«      r|j                  «       }t        |v rKt        |«      |j                  k7  s"|rAt        |j                  t        d«      |«      s!|j                  «        n|j                  «        	 |xs |j                  }|j                  j                  j!                  |«      |t        <   ||t"        <   ||t        <   || d<   t%        j&                  |j(                  d|¬«       y# t        $ r1 t        d¬	«      }t        |«      d
k(  r	|d   \  }}nt        d«      ‚Y ŒŸw xY w)zÚ
    Persist a user id and a backend in the request.
    This way a user doesn't have to re-authenticate on every request.
    Note that data set during the anonymous session is retained when the user
    logs in.
    r   r   Ú Nr"   zCUser must be passed as an argument or must be present in the scope.r   T)Úreturn_tuplesé   r   z’You have multiple authentication backends configured and therefore must provide the `backend` argument or set the `backend` attribute on the user.©ÚsenderÚrequestr"   )r   r   r   r   r   r   Úpkr   r   r   Ú	cycle_keyr%   ÚAttributeErrorr   ÚlenÚ_metaÚvalue_to_stringr   r
   ÚsendÚ	__class__)r!   r"   r%   r   Úsession_auth_hashÚbackendsÚ_s          r(   Úloginr;   :   sv  € ð ˜ÑÜð!ó
ð 	
ð �IÑ€GØÐØ€|Ø�y‰y˜ Ó&ˆØ€|ÜØQó
ð 	
ô ˆtÐ,Ô-Ø ×6Ñ6Ó8ÐÜ�gÑÜ  Ó)¨T¯W©WÒ4ÙÜ)Ø—‘Ô,¨bÓ1Ð3Dôð �M‰M�Oà×ÑÔðØÒ)˜TŸ\™\ˆð  Ÿ:™:Ÿ=™=×8Ñ8¸Ó>€GŒKÑØ#*€GÔÑ Ø 1€GÔÑØ€Eˆ&�Mä×Ñ˜tŸ~™~°tÀ$ÖGøô ò 	Ü ¨tÔ4ˆÜˆx‹=˜AÒØ! !™‰JˆA‰wäðGóð ñ ð	ús   Â8D. Ä.7E(Å'E(c                 ó  — ddl m} d| vrt        d«      ‚| d   }| j                  dd«      }t	        |d«      r|j
                  sd}|�"t        j                  |j                  d|¬«       |j                  «        d| v r |«       | d<   yy)	z_
    Remove the authenticated user's ID from the request and flush their session
    data.
    r   r   r   zWLogin cannot find session in scope. You should wrap your consumer in SessionMiddleware.r"   NÚis_authenticatedr-   )
r   r   r   r   r   r=   r   r6   r7   r   )r!   r   r   r"   s       r(   Úlogoutr>   r   s“   € õ 9à˜ÑÜð-ó
ð 	
ð �IÑ€Gð �9‰9�V˜TÓ"€DÜˆtÐ'Ô(°×1FÒ1FØˆØÐÜ×Ñ D§N¡N¸DÀtÕLØ‡M�M„OØ��Ù%›ˆˆfŠð ó    c                 ój   — t        «       j                  j                  j                  | t           «      S ©N)r   r4   r0   Ú	to_pythonr   )r   s    r(   r   r   Ž   s)   € ô Ó×!Ñ!×$Ñ$×.Ñ.¨w´{Ñ/CÓDÐDr?   c                   ó   — e Zd ZdZd„ Zy)ÚUserLazyObjectzc
    Throw a more useful error message when scope['user'] is accessed before
    it's resolved
    c                 ó   — t        d«      ‚)Nz(Accessing scope user before it is ready.)r   )Úselfs    r(   Ú_setupzUserLazyObject._setupš   s   € ÜÐCÓDÐDr?   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rG   © r?   r(   rD   rD   ”   s   „ ñó
Er?   rD   c                   ó.   ‡ — e Zd ZdZd„ Zd„ Zˆ fd„Zˆ xZS )ÚAuthMiddlewarezu
    Middleware which populates scope["user"] from a Django session.
    Requires SessionMiddleware to function.
    c                 óF   — d|vrt        d«      ‚d|vrt        «       |d<   y y )Nr   zPAuthMiddleware cannot find session in scope. SessionMiddleware must be above it.r"   )r   rD   ©rF   r!   s     r(   Úpopulate_scopezAuthMiddleware.populate_scope¤   s7   € à˜EÑ!Üð6óð ð
 ˜ÑÜ*Ó,ˆE�&ŠMð r?   c              ƒ   óF   K  — t        |«      ƒ d {  –—† |d   _        y 7 Œ­w)Nr"   )r   Ú_wrappedrP   s     r(   Úresolve_scopezAuthMiddleware.resolve_scope¯   s   è ø€ Ü'/°£×!6ˆˆf‰ÕÐ!6ús   ‚!‘’!c              ƒ   ó°   •K  — t        |«      }| j                  |«       | j                  |«      ƒ d {  –—†  t        ‰| �  |||«      ƒ d {  –—† S 7 Œ7 Œ­wrA   )ÚdictrQ   rT   ÚsuperÚ__call__)rF   r!   Úreceiver6   r7   s       €r(   rX   zAuthMiddleware.__call__²   sR   øè ø€ Ü�U“ˆà×Ñ˜EÔ"à× Ñ  Ó'×'Ð'ä‘WÑ% e¨W°dÓ;×;Ð;ð 	(øà;ús!   ƒ1A´AµAÁAÁAÁA)rH   rI   rJ   rK   rQ   rT   rX   Ú__classcell__)r7   s   @r(   rN   rN   ž   s   ø„ ñò
	-ò7÷<ð <r?   rN   c                 ó<   — t        t        t        | «      «      «      S rA   )r   r   rN   )Úinners    r(   ÚAuthMiddlewareStackr]   ½   s   € ÜÔ-¬n¸UÓ.CÓDÓEÐEr?   rA   )Údjango.confr   Údjango.contrib.authr   r   r   r   r   r	   r
   r   Údjango.utils.cryptor   Údjango.utils.functionalr   Úchannels.dbr   Úchannels.middlewarer   Úchannels.sessionsr   r   r   r;   r>   r   rD   rN   r]   rL   r?   r(   ú<module>re      sŽ   ðÝ  ÷	÷ 	ó 	õ 6Ý .å .Ý .ß Að ñ"#ó ð"#ðJ ò4Hó ð4Hðn ñ(ó ð(ò6EôE�Zô Eô<�^ô <ó>Fr?   