§
    Î“Ùh$  ã                   óð   — 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  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dS )é    N)Úget_user_model)Ú
Permission)ÚExistsÚOuterRefÚQ)ÚRemovedInDjango50Warning)Úfunc_supports_parameterc                   ó:   — e Zd Zd„ Zd„ Zdd„Zdd„Zdd„Zdd„ZdS )	ÚBaseBackendc                 ó   — d S ©N© )ÚselfÚrequestÚkwargss      ú[/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/django/contrib/auth/backends.pyÚauthenticatezBaseBackend.authenticate   ó   € Øˆtó    c                 ó   — d S 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Œuˆr   c                 ó   — t          ¦   «         S r   r   r   s      r   Úget_group_permissionsz!BaseBackend.get_group_permissions   r    r   c                 ób   — h |                       ||¬¦  «        £|                      ||¬¦  «        £S ©N)r   )r   r"   r   s      r   Úget_all_permissionszBaseBackend.get_all_permissions   sB   € ð
Ø×&Ò& x°SÐ&Ñ9Ô9ð
à×'Ò'¨°cÐ'Ñ:Ô:ð
ð 	
r   c                 ó4   — ||                       ||¬¦  «        v S r$   )r%   )r   r   Úpermr   s       r   Úhas_permzBaseBackend.has_perm   s    € Ø�t×/Ò/°¸cÐ/ÑBÔBÐBÐBr   r   )	Ú__name__Ú
__module__Ú__qualname__r   r   r   r"   r%   r(   r   r   r   r   r      sˆ   € € € € € ðð ð ðð ð ðð ð ð ðð ð ð ð
ð 
ð 
ð 
ðCð Cð Cð Cð Cð 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.
    Nc                 ó^  — |€|                      t          j        ¦  «        }|�|€d S 	 t          j                             |¦  «        }|                     |¦  «        r|                      |¦  «        r|S d S d S # t          j        $ r% t          ¦   «                              |¦  «         Y d S 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Ð/ØˆFð	ÝÔ-×@Ò@ÀÑJÔJˆDð ×"Ò" 8Ñ,Ô,ð °×1KÒ1KÈDÑ1QÔ1Qð Ø�ðð ð ð øõ Ô%ð 	/ð 	/ð 	/õ ‰KŒK×$Ò$ XÑ.Ô.Ð.Ð.Ð.Ð.ð	/øøøs   ©A8 Á80B,Â+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   r:   s     r   r5   z"ModelBackend.user_can_authenticate7   s   € õ
 �t˜[¨$Ñ/Ô/Ð/r   c                 ó4   — |j                              ¦   «         S r   )Úuser_permissionsÚall)r   r   s     r   Ú_get_user_permissionsz"ModelBackend._get_user_permissions>   s   € ØÔ(×,Ò,Ñ.Ô.Ð.r   c                 ó¬   — t          ¦   «         j                             d¦  «        }d|                     ¦   «         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_permissionsA   sW   € Ý*Ñ,Ô,Ô2×<Ò<¸XÑFÔFÐØ'Ð*;×*NÒ*NÑ*PÔ*PÑPÐÝÔ!Ô(ÐIÐIÐ,=¸xÐ+HÐIÐIÐIr   c                 ó’  — |j         r	|j        s|�t          ¦   «         S d|z  }t          ||¦  «        s…|j        rt
          j                             ¦   «         }n t          | d|z  ¦  «        |¦  «        }| 	                    dd¦  «         
                    ¦   «         }t          ||d„ |D ¦   «         ¦  «         t          ||¦  «        S )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.
        Nz_%s_perm_cachez_get_%s_permissionsÚcontent_type__app_labelÚcodenamec                 ó"   — h | ]\  }}|›d |›�’ŒS )ú.r   )Ú.0ÚctÚnames      r   ú	<setcomp>z0ModelBackend._get_permissions.<locals>.<setcomp>W   s'   € Ð+WÐ+WÐ+WÁXÀRÈ°r°r°r¸4¸4Ð,@Ð+WÐ+WÐ+Wr   )r<   Úis_anonymousr   ÚhasattrÚis_superuserr   rH   rA   r=   Úvalues_listÚorder_byÚsetattr)r   r   r   Ú	from_nameÚperm_cache_nameÚpermss         r   Ú_get_permissionszModelBackend._get_permissionsF   sà   € ð Ô!ð 	 XÔ%:ð 	¸c¸oÝ‘5”5ˆLà*¨YÑ6ˆÝ�x Ñ1Ô1ð 	ØÔ$ð SÝ"Ô*×.Ò.Ñ0Ô0��àH� Ð&;¸iÑ&GÑHÔHÈÑRÔR�Ø×%Ò%Ð&?ÀÑLÔL×UÒUÑWÔWˆEÝØ˜/Ð+WÐ+WÐQVÐ+WÑ+WÔ+Wñô ð õ �x Ñ1Ô1Ð1r   c                 ó0   — |                       ||d¦  «        S )zs
        Return a set of permission strings the user `user_obj` has from their
        `user_permissions`.
        r:   ©r_   r   s      r   r   z!ModelBackend.get_user_permissions[   s   € ð
 ×$Ò$ X¨s°FÑ;Ô;Ð;r   c                 ó0   — |                       ||d¦  «        S )zq
        Return a set of permission strings the user `user_obj` has from the
        groups they belong.
        Úgroupra   r   s      r   r"   z"ModelBackend.get_group_permissionsb   s   € ð
 ×$Ò$ X¨s°GÑ<Ô<Ð<r   c                 óº   •— |j         r	|j        s|�t          ¦   «         S t          |d¦  «        s&t	          ¦   «                              |¦  «        |_        |j        S )NÚ_perm_cache)r<   rV   r   rW   Úsuperr%   re   )r   r   r   Ú	__class__s      €r   r%   z ModelBackend.get_all_permissionsi   s[   ø€ ØÔ!ð 	 XÔ%:ð 	¸c¸oÝ‘5”5ˆLÝ�x Ñ/Ô/ð 	IÝ#(¡7¤7×#>Ò#>¸xÑ#HÔ#HˆHÔ ØÔ#Ð#r   c                 óZ   •— |j         o#t          ¦   «                              |||¬¦  «        S r$   )r<   rf   r(   )r   r   r'   r   rg   s       €r   r(   zModelBackend.has_permp   s*   ø€ ØÔ!ÐO¥e¡g¤g×&6Ò&6°xÀÈ3Ð&6Ñ&OÔ&OÐOr   c                 ón   ‡— |j         o-t          ˆfd„|                      |¦  «        D ¦   «         ¦  «        S )zU
        Return True if user_obj has any permissions in the given app_label.
        c              3   óZ   •K  — | ]%}|d |                      d¦  «        …         ‰k    V — Œ&d S )NrQ   )Úindex)rR   r'   Ú	app_labels     €r   ú	<genexpr>z0ModelBackend.has_module_perms.<locals>.<genexpr>w   sQ   øè è € ð *
ð *
àð Ð"�4—:’:˜c‘?”?Ð"Ô# yÒ0ð*
ð *
ð *
ð *
ð *
ð *
r   )r<   Úanyr%   )r   r   rl   s     `r   Úhas_module_permszModelBackend.has_module_permss   sU   ø€ ð Ô!ð 
¥cð *
ð *
ð *
ð *
à×0Ò0°Ñ:Ô:ð*
ñ *
ô *
ñ '
ô '
ð 	
r   Tc                 ó  — t          |t          ¦  «        r7	 |                     d¦  «        \  }}nA# t          $ r t          d¦  «        ‚w xY wt          |t          ¦  «        st          d¦  «        ‚|�t          j                             ¦   «         S t          t          d¦  «        ¬¦  «        t          t          d¦  «        ¬¦  «        z  }t          |t          ¦  «        r|t          |j        ¬¦  «        z  }n|t          ||¬	¦  «        z  }t          t          j                             |¦  «        ¦  «        }|r|t          d
¬¦  «        z  }|�|t          |¬¦  «        z  }t          j                             |¦  «        S )z�
        Return users that have permission "perm". By default, filter out
        inactive users and include superusers.
        rQ   zDPermission name should be in the form app_label.permission_codename.z>The `perm` argument must be a string or a permission instance.NÚpk)Úgroup__user)r:   ©rq   )rO   rN   T)rX   )r<   )Ú
isinstanceÚstrÚsplitÚ
ValueErrorr   Ú	TypeErrorr0   r2   Únoner   r   rq   r   rH   rI   )	r   r'   r<   Úinclude_superusersr   rl   rO   Úpermission_qÚuser_qs	            r   Ú	with_permzModelBackend.with_perm|   s�  € õ
 �d�CÑ Ô ð 	ðØ&*§j¢j°¡o¤oÑ#�	˜8˜8øÝð ð ð Ý ð5ñô ð ðøøøõ
 ˜D¥*Ñ-Ô-ð 	ÝØPñô ð ð ˆ?ÝÔ-×2Ò2Ñ4Ô4Ð4å¥X¨d¡^¤^Ð4Ñ4Ô4µq½hÀt¹n¼nÐ7MÑ7MÔ7MÑMˆÝ�d�JÑ'Ô'ð 	TØ�A ¤˜M™MœMÑ)ˆLˆLà�A xÈÐSÑSÔSÑSˆLå�
Ô*×1Ò1°,Ñ?Ô?Ñ@Ô@ˆØð 	+Ø•a TÐ*Ñ*Ô*Ñ*ˆFØÐ Ø•a )Ð,Ñ,Ô,Ñ,ˆFåÔ)×0Ò0°Ñ8Ô8Ð8s	   —0 °A
c                 ó¤   — 	 t           j                             |¬¦  «        }n# t           j        $ r Y d S w xY w|                      |¦  «        r|nd S )Nrs   )r0   r2   r/   r6   r5   )r   r   r:   s      r   r   zModelBackend.get_userŸ   sd   € ð	ÝÔ-×1Ò1°WÐ1Ñ=Ô=ˆDˆDøÝÔ%ð 	ð 	ð 	Ø�4�4ð	øøøà×1Ò1°$Ñ7Ô7ÐAˆtˆt¸TÐAs   ‚ # £6µ6)NNr   )TTN)r)   r*   r+   Ú__doc__r   r5   rB   rL   r_   r   r"   r%   r(   ro   r}   r   Ú__classcell__)rg   s   @r   r-   r-   #   s   ø€ € € € € ðð ðð ð ð ð0ð 0ð 0ð/ð /ð /ðJð Jð Jð
2ð 2ð 2ð*<ð <ð <ð <ð=ð =ð =ð =ð$ð $ð $ð $ð $ð $ðPð Pð Pð Pð Pð Pð
ð 
ð 
ð!9ð !9ð !9ð !9ðFBð Bð Bð Bð Bð Bð Br   r-   c                   ó   — e Zd Zd„ ZdS )ÚAllowAllUsersModelBackendc                 ó   — dS ©NTr   r>   s     r   r5   z/AllowAllUsersModelBackend.user_can_authenticate¨   r   r   N©r)   r*   r+   r5   r   r   r   r‚   r‚   §   ó#   € € € € € ðð ð ð ð r   r‚   c                   ó*   — e Zd ZdZdZd„ Zd„ Zdd„ZdS )Ú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                 ó  — |sdS d}d}|                       |¦  «        }| j        r&t          j        j        di t          j        |i¤Ž\  }}n6	 t          j                             |¦  «        }n# t          j        $ r Y nw xY wt          | j	        d¦  «        r|  	                    |||¬¦  «        }nAt          j        d| j        j        › d�t          ¬¦  «         |r|  	                    ||¦  «        }|                      |¦  «        r|ndS )	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Úcreated)rŠ   z1`created=True` must be added to the signature of z.configure_user().)Úcategoryr   )Úclean_usernameÚcreate_unknown_userr0   r2   Úget_or_creater1   r3   r6   r	   Úconfigure_userÚwarningsÚwarnrg   r+   r   r5   )r   r   Úremote_userrŠ   r:   r8   s         r   r   zRemoteUserBackend.authenticate»   sV  € ð ð 	ØˆFØˆØˆØ×&Ò& {Ñ3Ô3ˆð
 Ô#ð 	Ý%Ô6ÔDð ð ÝÔ+¨XÐ6ðð ‰MˆD�'�'ðÝ Ô1×DÒDÀXÑNÔN��øÝÔ)ð ð ð Ø�ðøøøõ
 # 4Ô#6¸	ÑBÔBð 		:Ø×&Ò& w°¸gÐ&ÑFÔFˆDˆDåŒMðCØ”>Ô.ðCð Cð Cå1ðñ ô ð ð
 ð :Ø×*Ò*¨7°DÑ9Ô9�Ø×1Ò1°$Ñ7Ô7ÐAˆtˆt¸TÐAs   ÁA, Á,A>Á=A>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   r8   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   r:   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ð (Bð (BðTð ð ðð ð ð ð ð r   rˆ   c                   ó   — e Zd Zd„ ZdS )ÚAllowAllUsersRemoteUserBackendc                 ó   — dS r„   r   r>   s     r   r5   z4AllowAllUsersRemoteUserBackend.user_can_authenticateø   r   r   Nr…   r   r   r   r–   r–   ÷   r†   r   r–   )r�   Údjango.contrib.authr   Údjango.contrib.auth.modelsr   Údjango.db.modelsr   r   r   Údjango.utils.deprecationr   Údjango.utils.inspectr	   r0   r   r-   r‚   rˆ   r–   r   r   r   ú<module>r�      s~  ðØ €€€à .Ð .Ð .Ð .Ð .Ð .Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø =Ð =Ð =Ð =Ð =Ð =Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8àˆNÑÔ€	ðCð Cð Cð Cð Cñ Cô Cð Cð.ABð ABð ABð ABð AB�;ñ ABô ABð ABðHð ð ð ð  ñ ô ð ð
Hð Hð Hð Hð H˜ñ Hô Hð HðVð ð ð ð Ð%6ñ ô ð ð ð r   