Ë
    ¹ûàgW!  ã                   óª   — d dl mZ d dlmZ d dlmZmZmZ  e«       Z G d„ d«      Z	 G d„ de	«      Z
 G d„ d	e
«      Z G d
„ de
«      Z G d„ de«      Zy)é    )Úget_user_model)Ú
Permission)ÚExistsÚOuterRefÚQc                   ó8   — e Zd Zd„ Zd„ Zdd„Zdd„Zdd„Zdd„Zy)	ÚBaseBackendc                  ó   — y ©N© )ÚselfÚrequestÚkwargss      úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/contrib/auth/backends.pyÚauthenticatezBaseBackend.authenticate	   ó   € Øó    c                  ó   — y r   r   )r   Úuser_ids     r   Úget_userzBaseBackend.get_user   r   r   Nc                 ó   — t        «       S r   ©Úset©r   Úuser_objÚobjs      r   Úget_user_permissionsz BaseBackend.get_user_permissions   ó	   € Ü‹uˆr   c                 ó   — t        «       S r   r   r   s      r   Úget_group_permissionsz!BaseBackend.get_group_permissions   r   r   c                 óR   — h | j                  ||¬«      £| j                  ||¬«      £S ©N)r   )r   r    r   s      r   Úget_all_permissionszBaseBackend.get_all_permissions   s<   € ð
Ø×&Ñ& x°SÐ&Ó9ð
à×'Ñ'¨°cÐ'Ó:ð
ð 	
r   c                 ó,   — || j                  ||¬«      v S r"   )r#   )r   r   Úpermr   s       r   Úhas_permzBaseBackend.has_perm   s   € Ø�t×/Ñ/°¸cÐ/ÓBÐBÐBr   r   )	Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r#   r&   r   r   r   r	   r	      s!   „ òòóóó
ôCr   r	   c                   ót   ‡ — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zdd„Z	dd„Z
dˆ fd	„	Zdˆ fd
„	Zd„ Zdd„Zd„ Zˆ xZS )ÚModelBackendz9
    Authenticates against settings.AUTH_USER_MODEL.
    c                 ó>  — |€|j                  t        j                  «      }|�|€y 	 t        j                  j	                  |«      }|j                  |«      r| j                  |«      r|S y y # t        j                  $ r t        «       j                  |«       Y y w xY wr   )	ÚgetÚ	UserModelÚUSERNAME_FIELDÚ_default_managerÚget_by_natural_keyÚcheck_passwordÚuser_can_authenticateÚDoesNotExistÚset_password)r   r   ÚusernameÚpasswordr   Úusers         r   r   zModelBackend.authenticate$   s™   € ØÐØ—z‘z¤)×":Ñ":Ó;ˆHØÐ˜xÐ/Øð	Ü×-Ñ-×@Ñ@ÀÓJˆDð ×"Ñ" 8Ô,°×1KÑ1KÈDÔ1QØ�ð 2RÐ,øô ×%Ñ%ò 	/ô ‹K×$Ñ$ XÖ.ð	/ús   ¨A- Á-,BÂBc                 ó   — t        |dd«      S )z{
        Reject users with is_active=False. Custom user models that don't have
        that attribute are allowed.
        Ú	is_activeT)Úgetattr©r   r8   s     r   r3   z"ModelBackend.user_can_authenticate3   s   € ô
 �t˜[¨$Ó/Ð/r   c                 ó6   — |j                   j                  «       S r   )Úuser_permissionsÚall)r   r   s     r   Ú_get_user_permissionsz"ModelBackend._get_user_permissions:   s   € Ø×(Ñ(×,Ñ,Ó.Ð.r   c                 ó°   — t        «       j                  j                  d«      }d|j                  «       z  }t	        j
                  j                  di ||i¤ŽS )NÚgroupsz	group__%sr   )r   Ú_metaÚ	get_fieldÚrelated_query_namer   ÚobjectsÚfilter)r   r   Úuser_groups_fieldÚuser_groups_querys       r   Ú_get_group_permissionsz#ModelBackend._get_group_permissions=   sQ   € Ü*Ó,×2Ñ2×<Ñ<¸XÓFÐØ'Ð*;×*NÑ*NÓ*PÑPÐÜ×!Ñ!×(Ñ(ÑIÐ,=¸xÐ+HÑIÐIr   c                 óš  — |j                   r|j                  s|�
t        «       S d|z  }t        ||«      s…|j                  rt
        j                  j                  «       }n t        | d|z  «      |«      }|j                  dd«      j                  «       }t        |||D ��ch c]  \  }}|›d|›�’Œ c}}«       t        ||«      S c c}}w )zá
        Return the permissions of `user_obj` from `from_name`. `from_name` can
        be either "group" or "user" to return permissions from
        `_get_group_permissions` or `_get_user_permissions` respectively.
        z_%s_perm_cachez_get_%s_permissionsÚcontent_type__app_labelÚcodenameú.)r:   Úis_anonymousr   ÚhasattrÚis_superuserr   rF   r?   r;   Úvalues_listÚorder_byÚsetattr)r   r   r   Ú	from_nameÚperm_cache_nameÚpermsÚctÚnames           r   Ú_get_permissionszModelBackend._get_permissionsB   s¿   € ð ×!Ò! X×%:Ò%:¸c¸oÜ“5ˆLà*¨YÑ6ˆÜ�x Ô1Ø×$Ò$Ü"×*Ñ*×.Ñ.Ó0‘àHœ Ð&;¸iÑ&GÓHÈÓR�Ø×%Ñ%Ð&?ÀÓL×UÑUÓWˆEÜØ˜/ÐQV×+WÁXÀRÈ²r¹4Ò,@Ó+Wôô �x Ó1Ð1ùó ,Xs   Â"Cc                 ó(   — | j                  ||d«      S )zs
        Return a set of permission strings the user `user_obj` has from their
        `user_permissions`.
        r8   ©rZ   r   s      r   r   z!ModelBackend.get_user_permissionsW   s   € ð
 ×$Ñ$ X¨s°FÓ;Ð;r   c                 ó(   — | j                  ||d«      S )zq
        Return a set of permission strings the user `user_obj` has from the
        groups they belong.
        Úgroupr\   r   s      r   r    z"ModelBackend.get_group_permissions^   s   € ð
 ×$Ñ$ X¨s°GÓ<Ð<r   c                 ó¤   •— |j                   r|j                  s|�
t        «       S t        |d«      st        ‰| �  |«      |_        |j                  S )NÚ_perm_cache)r:   rO   r   rP   Úsuperr#   r`   )r   r   r   Ú	__class__s      €r   r#   z ModelBackend.get_all_permissionse   sG   ø€ Ø×!Ò! X×%:Ò%:¸c¸oÜ“5ˆLÜ�x Ô/Ü#(¡7Ñ#>¸xÓ#HˆHÔ Ø×#Ñ#Ð#r   c                 óD   •— |j                   xr t        ‰| �	  |||¬«      S r"   )r:   ra   r&   )r   r   r%   r   rb   s       €r   r&   zModelBackend.has_perml   s%   ø€ Ø×!Ñ!ÒO¤e¡gÑ&6°xÀÈ3Ð&6Ó&OÐOr   c                 óf   ‡— |j                   xr# t        ˆfd„| j                  |«      D «       «      S )zU
        Return True if user_obj has any permissions in the given app_label.
        c              3   óL   •K  — | ]  }|d |j                  d«       ‰k(  –— Œ y ­w)NrN   )Úindex)Ú.0r%   Ú	app_labels     €r   ú	<genexpr>z0ModelBackend.has_module_perms.<locals>.<genexpr>s   s.   øè ø€ ò *
àð Ð"�4—:‘:˜c“?Ð# yÕ0ñ*
ùs   ƒ!$)r:   Úanyr#   )r   r   rh   s     `r   Úhas_module_permszModelBackend.has_module_permso   s7   ø€ ð ×!Ñ!ò 
¤có *
à×0Ñ0°Ó:ô*
ó '
ð 	
r   c                 ó�  — t        |t        «      r	 |j                  d«      \  }}nt        |t        «      st        d«      ‚|�t        j                  j                  «       S t        t        d«      ¬«      t        t        d«      ¬«      z  }t        |t        «      r|t        |j                  ¬«      z  }n|t        ¬«      z  }t        t        j                  j                  |«      «      }|r|t        d	¬
«      z  }|�|t        |¬«      z  }t        j                  j                  |«      S # t        $ r t        d«      ‚w xY w)z�
        Return users that have permission "perm". By default, filter out
        inactive users and include superusers.
        rN   zDPermission name should be in the form app_label.permission_codename.z>The `perm` argument must be a string or a permission instance.Úpk)Úgroup__user)r8   ©rm   )rM   rL   T)rQ   )r:   )Ú
isinstanceÚstrÚsplitÚ
ValueErrorr   Ú	TypeErrorr.   r0   Únoner   r   rm   r   rF   rG   )	r   r%   r:   Úinclude_superusersr   rh   rM   Úpermission_qÚuser_qs	            r   Ú	with_permzModelBackend.with_permx   s"  € ô
 �dœCÔ ðØ&*§j¡j°£oÑ#�	™8ô ˜D¤*Ô-ÜØPóð ð ˆ?Ü×-Ñ-×2Ñ2Ó4Ð4ä¤X¨d£^Ô4´q¼hÀt»nÔ7MÑMˆÜ�dœJÔ'ØœA §¡œMÑ)‰LàœA xÈÔSÑSˆLäœ
×*Ñ*×1Ñ1°,Ó?Ó@ˆÙØ”a TÔ*Ñ*ˆFØÐ Ø”a )Ô,Ñ,ˆFä×)Ñ)×0Ñ0°Ó8Ð8øô3 ò Ü ð5óð ðús   ’D0 Ä0Ec                 ó    — 	 t         j                  j                  |¬«      }| j	                  |«      r|S d S # t         j                  $ r Y y w xY w)Nro   )r.   r0   r-   r4   r3   )r   r   r8   s      r   r   zModelBackend.get_user›   sT   € ð	Ü×-Ñ-×1Ñ1°WÐ1Ó=ˆDð ×1Ñ1°$Ô7ˆtÐA¸TÐAøô ×%Ñ%ò 	Ùð	ús   ‚ 7 ·AÁA)NNr   )TTN)r'   r(   r)   Ú__doc__r   r3   r@   rJ   rZ   r   r    r#   r&   rk   ry   r   Ú__classcell__)rb   s   @r   r+   r+      sH   ø„ ñóò0ò/òJò
2ó*<ó=õ$õPò
ó!9öFBr   r+   c                   ó   — e Zd Zd„ Zy)ÚAllowAllUsersModelBackendc                  ó   — y©NTr   r<   s     r   r3   z/AllowAllUsersModelBackend.user_can_authenticate¤   r   r   N©r'   r(   r)   r3   r   r   r   r~   r~   £   ó   „ ór   r~   c                   ó(   — e Zd ZdZdZd„ Zd„ Zdd„Zy)ÚRemoteUserBackendaÆ  
    This backend is to be used in conjunction with the ``RemoteUserMiddleware``
    found in the middleware module of this package, and is used when the server
    is handling authentication outside of Django.

    By default, the ``authenticate`` method creates ``User`` objects for
    usernames that don't already exist in the database.  Subclasses can disable
    this behavior by setting the ``create_unknown_user`` attribute to
    ``False``.
    Tc                 ót  — |syd}d}| j                  |«      }| j                  r3t        j                  j                  di t        j
                  |i¤Ž\  }}n 	 t        j                  j                  |«      }| j                  |||¬«      }| j                  |«      r|S dS # t        j                  $ r Y Œ>w xY w)ai  
        The username passed as ``remote_user`` is considered trusted. Return
        the ``User`` object with the given username. Create a new ``User``
        object if ``create_unknown_user`` is ``True``.

        Return None if ``create_unknown_user`` is ``False`` and a ``User``
        object with the given username is not found in the database.
        NF)Úcreatedr   )
Úclean_usernameÚcreate_unknown_userr.   r0   Úget_or_creater/   r1   r4   Úconfigure_userr3   )r   r   Úremote_userr†   r8   r6   s         r   r   zRemoteUserBackend.authenticate·   sÂ   € ñ ØØˆØˆØ×&Ñ& {Ó3ˆð
 ×#Ò#Ü%×6Ñ6×DÑDñ Ü×+Ñ+¨XÐ6ñ‰MˆD‘'ðÜ ×1Ñ1×DÑDÀXÓN�ð ×"Ñ" 7¨D¸'Ð"ÓBˆØ×1Ñ1°$Ô7ˆtÐA¸TÐAøô ×)Ñ)ò Ùðús   ÁB! Â!B7Â6B7c                 ó   — |S )zÆ
        Perform any cleaning on the "username" prior to using it to get or
        create the user object.  Return the cleaned username.

        By default, return the username unchanged.
        r   )r   r6   s     r   r‡   z RemoteUserBackend.clean_usernameÕ   s	   € ð ˆr   c                 ó   — |S )zp
        Configure a user and return the updated user.

        By default, return the user unmodified.
        r   )r   r   r8   r†   s       r   rŠ   z RemoteUserBackend.configure_userÞ   s	   € ð ˆr   N)T)r'   r(   r)   r{   rˆ   r   r‡   rŠ   r   r   r   r„   r„   ¨   s   „ ñ	ð ÐòBò<ôr   r„   c                   ó   — e Zd Zd„ Zy)ÚAllowAllUsersRemoteUserBackendc                  ó   — yr€   r   r<   s     r   r3   z4AllowAllUsersRemoteUserBackend.user_can_authenticateè   r   r   Nr�   r   r   r   r�   r�   ç   r‚   r   r�   N)Údjango.contrib.authr   Údjango.contrib.auth.modelsr   Údjango.db.modelsr   r   r   r.   r	   r+   r~   r„   r�   r   r   r   ú<module>r”      s\   ðÝ .Ý 1ß 0Ñ 0áÓ€	÷Cñ Cô.AB�;ô ABôH ô ô
<˜ô <ô~Ð%6õ r   