Ë
    ¤#ij¥2  ã                   ó¶   — d dl mZ 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)é    )Úsync_to_async)Úget_user_model)Ú
Permission)ÚExistsÚOuterRefÚQc                   ód   — e Zd Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zdd„Z	dd	„Z
dd
„Zdd„Zdd„Zdd„Zy)ÚBaseBackendc                  ó   — y ©N© ©ÚselfÚrequestÚkwargss      úV/var/www/html/office/venv/lib/python3.12/site-packages/django/contrib/auth/backends.pyÚauthenticatezBaseBackend.authenticate   ó   € Øó    c              ‹   óV   K  —  t        | j                  «      |fi |¤Žƒ d {  –—† S 7 Œ­wr   )r   r   r   s      r   ÚaauthenticatezBaseBackend.aauthenticate   s)   è ø€ Ø5”] 4×#4Ñ#4Ó5°gÑHÀÑH×HÐHÐHúó   ‚ )¢'£)c                  ó   — y r   r   ©r   Úuser_ids     r   Úget_userzBaseBackend.get_user   r   r   c              ƒ   óT   K  —  t        | j                  «      |«      ƒ d {  –—† S 7 Œ­wr   )r   r   r   s     r   Ú	aget_userzBaseBackend.aget_user   s"   è ø€ Ø1”] 4§=¡=Ó1°'Ó:×:Ð:Ð:ús   ‚(¡&¢(Nc                 ó   — t        «       S r   ©Úset©r   Úuser_objÚobjs      r   Úget_user_permissionsz BaseBackend.get_user_permissions   ó	   € Ü‹uˆr   c              ƒ   óV   K  —  t        | j                  «      ||«      ƒ d {  –—† S 7 Œ­wr   )r   r%   r"   s      r   Úaget_user_permissionsz!BaseBackend.aget_user_permissions   s&   è ø€ Ø=”] 4×#<Ñ#<Ó=¸hÈÓL×LÐLÐLúr   c                 ó   — t        «       S r   r    r"   s      r   Úget_group_permissionsz!BaseBackend.get_group_permissions   r&   r   c              ƒ   óV   K  —  t        | j                  «      ||«      ƒ d {  –—† S 7 Œ­wr   )r   r*   r"   s      r   Úaget_group_permissionsz"BaseBackend.aget_group_permissions    s&   è ø€ Ø>”] 4×#=Ñ#=Ó>¸xÈÓM×MÐMÐMú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              ƒ   ó‚   K  — h | j                  ||¬«      ƒ d {  –—† £| j                  ||¬«      ƒ d {  –—† £S 7 Œ 7 Œ­wr.   )r(   r,   r"   s      r   Úaget_all_permissionsz BaseBackend.aget_all_permissions)   sM   è ø€ ð
Ø×-Ñ-¨h¸CÐ-Ó@×@ð
à×.Ñ.¨x¸SÐ.ÓA×Að
ð 	
Ø@øØAús   ‚?š;›?µ=¶?½?c                 ó,   — || j                  ||¬«      v S r.   )r/   ©r   r#   Úpermr$   s       r   Úhas_permzBaseBackend.has_perm/   s   € Ø�t×/Ñ/°¸cÐ/ÓBÐBÐBr   c              ƒ   óF   K  — || j                  ||«      ƒ d {  –—† v S 7 Œ­wr   )r1   r3   s       r   Ú	ahas_permzBaseBackend.ahas_perm2   s$   è ø€ Ø˜T×6Ñ6°xÀÓE×EÐEÐEÐEús   ‚!™š!r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r%   r(   r*   r,   r/   r1   r5   r7   r   r   r   r
   r
   
   sC   „ òòIòò;óóMóóNó
ó
óCôFr   r
   c                   óª   ‡ — e Zd ZdZdd„Zdd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dd	„Zdd
„Zdd„Zdd„Zdˆ fd„	Zdˆ fd„	Zdˆ fd„	Zd„ Zd„ Zdd„Z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              ‹   ón  K  — |€|j                  t        j                  «      }|�|€y 	 t        j                  j	                  |«      ƒ d {  –—† }|j                  |«      ƒ d {  –—† r| j                  |«      r|S y y 7 Œ27 Œ# t        j                  $ r t        «       j                  |«       Y y w xY w­wr   )	r>   r?   r@   rA   Úaget_by_natural_keyÚacheck_passwordrD   rE   rF   rG   s         r   r   zModelBackend.aauthenticateJ   sµ   è ø€ ØÐØ—z‘z¤)×":Ñ":Ó;ˆHØÐ˜xÐ/Øð
	Ü"×3Ñ3×GÑGÈÓQ×QˆDð ×)Ñ)¨(Ó3×3Ð3¸×8RÑ8RØô9ð �ð9Ð3ð Røð 4ùô ×%Ñ%ò 	/ô ‹K×$Ñ$ XÖ.ð	/üsL   ‚'B5ª"B ÁA?ÁB ÁB5Á%BÁ&B5Á?B ÂB5Â,B2Â/B5Â1B2Â2B5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   rJ   s     r   rD   z"ModelBackend.user_can_authenticate[   s   € ô
 �t˜[¨$Ó/Ð/r   c                 ó6   — |j                   j                  «       S r   )Úuser_permissionsÚall©r   r#   s     r   Ú_get_user_permissionsz"ModelBackend._get_user_permissionsb   s   € Ø×(Ñ(×,Ñ,Ó.Ð.r   c                 ór   — t         j                  j                  |j                  j	                  «       ¬«      S )N)Ú	group__in)r   ÚobjectsÚfilterÚgroupsrT   rU   s     r   Ú_get_group_permissionsz#ModelBackend._get_group_permissionse   s)   € Ü×!Ñ!×(Ñ(°8·?±?×3FÑ3FÓ3HÐ(Ó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.
        ú_%s_perm_cacheú_get_%s_permissionsÚcontent_type__app_labelÚcodenameú.©rO   Úis_anonymousr!   ÚhasattrÚis_superuserr   rY   rT   rP   Úvalues_listÚorder_byÚsetattr©r   r#   r$   Ú	from_nameÚperm_cache_nameÚpermsÚctÚnames           r   Ú_get_permissionszModelBackend._get_permissionsh   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              ƒ   ó¶  K  — |j                   r|j                  s|�
t        «       S d|z  }t        ||«      s‚|j                  rt
        j                  j                  «       }n t        | d|z  «      |«      }|j                  dd«      j                  «       }t        |||2 ��ch c3 d{  –—† \  }}|›d|›�’Œt        ||«      S 7 Œ6 nc c}}w c}}«       Œ­w)zSee _get_permissions().Nr^   r_   r`   ra   rb   rc   rj   s           r   Ú_aget_permissionszModelBackend._aget_permissions}   sÇ   è ø€ à×!Ò! X×%:Ò%:¸c¸oÜ“5ˆLà*¨YÑ6ˆÜ�x Ô1Ø×$Ò$Ü"×*Ñ*×.Ñ.Ó0‘àHœ Ð&;¸iÑ&GÓHÈÓR�Ø×%Ñ%Ð&?ÀÓL×UÑUÓWˆEÜØØØ<A×BÕB±°°DšB¡Ò%ä�x Ó1Ð1ð CøÑBùÖBôús<   ‚B"CÂ$C
Â&CÂ*CÂ+CÂ.C
Â:CÃCÃC
Ã	Cc                 ó(   — | j                  ||d«      S )zs
        Return a set of permission strings the user `user_obj` has from their
        `user_permissions`.
        rJ   ©rp   r"   s      r   r%   z!ModelBackend.get_user_permissions�   s   € ð
 ×$Ñ$ X¨s°FÓ;Ð;r   c              ƒ   óD   K  — | j                  ||d«      ƒ d{  –—† S 7 Œ­w)zSee get_user_permissions().rJ   N©rr   r"   s      r   r(   z"ModelBackend.aget_user_permissions—   s!   è ø€ à×+Ñ+¨H°c¸6ÓB×BÐBÐBúó   ‚ ™š c                 ó(   — | j                  ||d«      S )zq
        Return a set of permission strings the user `user_obj` has from the
        groups they belong.
        Úgrouprt   r"   s      r   r*   z"ModelBackend.get_group_permissions›   s   € ð
 ×$Ñ$ X¨s°GÓ<Ð<r   c              ƒ   óD   K  — | j                  ||d«      ƒ d{  –—† S 7 Œ­w)zSee get_group_permissions().ry   Nrv   r"   s      r   r,   z#ModelBackend.aget_group_permissions¢   s!   è ø€ à×+Ñ+¨H°c¸7ÓC×CÐCÐCúrw   c                 ó¤   •— |j                   r|j                  s|�
t        «       S t        |d«      st        ‰| �  |«      |_        |j                  S )NÚ_perm_cache)rO   rd   r!   re   Úsuperr/   r|   )r   r#   r$   Ú	__class__s      €r   r/   z ModelBackend.get_all_permissions¦   sG   ø€ Ø×!Ò! X×%:Ò%:¸c¸oÜ“5ˆLÜ�x Ô/Ü#(¡7Ñ#>¸xÓ#HˆHÔ Ø×#Ñ#Ð#r   c                 óD   •— |j                   xr t        ‰| �	  |||¬«      S r.   )rO   r}   r5   ©r   r#   r4   r$   r~   s       €r   r5   zModelBackend.has_perm­   s%   ø€ Ø×!Ñ!ÒO¤e¡gÑ&6°xÀÈ3Ð&6Ó&OÐOr   c              ƒ   ó`   •K  — |j                   xr t        ‰| �	  |||¬«      ƒ d {  –—† S 7 Œ­wr.   )rO   r}   r7   r€   s       €r   r7   zModelBackend.ahas_perm°   s0   øè ø€ Ø×!Ñ!ÒV¬E©GÑ,=¸hÈÐRUÐ,=Ó,V×&VÐVÐ&Vús   ƒ$.§,¨.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©Nrb   ©Úindex©Ú.0r4   Ú	app_labels     €r   ú	<genexpr>z0ModelBackend.has_module_perms.<locals>.<genexpr>·   ó.   øè ø€ ò *
àð Ð"�4—:‘:˜c“?Ð# yÕ0ñ*
ùó   ƒ!$)rO   Úanyr/   ©r   r#   r‰   s     `r   Úhas_module_permszModelBackend.has_module_perms³   s7   ø€ ð ×!Ñ!ò 
¤có *
à×0Ñ0°Ó:ô*
ó '
ð 	
r   c              ƒ   ó‚   ‡K  — |j                   xr+ t        ˆfd„| j                  |«      ƒ d{  –—† D «       «      S 7 Œ­w)zSee has_module_perms()c              3   óL   •K  — | ]  }|d |j                  d«       ‰k(  –— Œ y ­wr„   r…   r‡   s     €r   rŠ   z1ModelBackend.ahas_module_perms.<locals>.<genexpr>¾   r‹   rŒ   N)rO   r�   r1   rŽ   s     `r   Úahas_module_permszModelBackend.ahas_module_perms¼   s?   øè ø€ à×!Ñ!ò 
¤có *
à"×7Ñ7¸ÓA×Aô*
ó '
ð 	
àAús   ƒ,?¯=
°?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.
        rb   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)rJ   ©r”   )ra   r`   T)rf   )rO   )Ú
isinstanceÚstrÚsplitÚ
ValueErrorr   Ú	TypeErrorr?   rA   Únoner   r   r”   r   rY   rZ   )	r   r4   rO   Úinclude_superusersr$   r‰   ra   Úpermission_qÚuser_qs	            r   Ú	with_permzModelBackend.with_permÃ   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©Nr–   )r?   rA   r>   rE   rD   ©r   r   rJ   s      r   r   zModelBackend.get_useræ   sT   € ð	Ü×-Ñ-×1Ñ1°WÐ1Ó=ˆDð ×1Ñ1°$Ô7ˆtÐA¸TÐAøô ×%Ñ%ò 	Ùð	ús   ‚ 7 ·AÁAc              ƒ   ó¼   K  — 	 t         j                  j                  |¬«      ƒ d {  –—† }| j	                  |«      r|S d S 7 Œ# t         j                  $ r Y y w xY w­wr¢   )r?   rA   ÚagetrE   rD   r£   s      r   r   zModelBackend.aget_userí   s^   è ø€ ð	Ü"×3Ñ3×8Ñ8¸GÐ8ÓD×DˆDð ×1Ñ1°$Ô7ˆtÐA¸TÐAð EùÜ×%Ñ%ò 	Ùð	üs7   ‚A„#A §A¨A ¬AÁA ÁAÁAÁAÁA)NNr   )TTN)r8   r9   r:   Ú__doc__r   r   rD   rV   r\   rp   rr   r%   r(   r*   r,   r/   r5   r7   r�   r’   r    r   r   Ú__classcell__)r~   s   @r   r<   r<   6   so   ø„ ñóóò"0ò/òJò2ò*2ó&<óCó=óDõ$õPõWò
ò
ó!9òFBöBr   r<   c                   ó   — e Zd Zd„ Zy)ÚAllowAllUsersModelBackendc                  ó   — y©NTr   rQ   s     r   rD   z/AllowAllUsersModelBackend.user_can_authenticateö   r   r   N©r8   r9   r:   rD   r   r   r   r©   r©   õ   ó   „ ór   r©   c                   ó6   — e Zd ZdZdZd„ Zd„ Zd„ Zd	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?   rA   Úget_or_creater@   rB   rE   Úconfigure_userrD   ©r   r   Úremote_userr²   rJ   rH   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              ƒ   ó¸  K  — |syd}d}| j                  |«      }| j                  r;t        j                  j                  di t        j
                  |i¤Žƒ d{  –—† \  }}n(	 t        j                  j                  |«      ƒ d{  –—† }| j                  |||¬«      ƒ d{  –—† }| j                  |«      r|S dS 7 Œa7 Œ7# t        j                  $ r Y ŒJw xY w7 Œ6­w)zSee authenticate().NFr±   r   )
r³   r´   r?   rA   Úaget_or_creater@   rL   rE   Úaconfigure_userrD   r·   s         r   r   zRemoteUserBackend.aauthenticate'  sÜ   è ø€ áØØˆØˆØ×&Ñ& {Ó3ˆð
 ×#Ò#Ü"+×"<Ñ"<×"KÑ"Kñ #Ü×+Ñ+¨XÐ6ñ#÷ ‰MˆD‘'ðÜ&×7Ñ7×KÑKÈHÓU×U�ð ×)Ñ)¨'°4ÀÐ)ÓI×IˆØ×1Ñ1°$Ô7ˆtÐA¸TÐAðøð
 VùÜ×)Ñ)ò ÙðúàIúsT   ‚ACÁB;ÁCÁ#"B? ÂB=ÂB? Â
CÂ!CÂ"CÂ=B? Â?CÃCÃCÃC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   rH   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   rJ   r²   s       r   r¶   z RemoteUserBackend.configure_userG  s	   € ð ˆr   c              ƒ   óX   K  —  t        | j                  «      |||«      ƒ d{  –—† S 7 Œ­w)zSee configure_user()N)r   r¶   r¾   s       r   r»   z!RemoteUserBackend.aconfigure_userO  s(   è ø€ à7”] 4×#6Ñ#6Ó7¸ÀÀwÓO×OÐOÐOús   ‚!*£(¤*N)T)
r8   r9   r:   r¦   r´   r   r   r³   r¶   r»   r   r   r   r¯   r¯   ú   s+   „ ñ	ð ÐòBò<Bò.óôPr   r¯   c                   ó   — e Zd Zd„ Zy)ÚAllowAllUsersRemoteUserBackendc                  ó   — yr«   r   rQ   s     r   rD   z4AllowAllUsersRemoteUserBackend.user_can_authenticateU  r   r   Nr¬   r   r   r   rÁ   rÁ   T  r­   r   rÁ   N)Úasgiref.syncr   Údjango.contrib.authr   Údjango.contrib.auth.modelsr   Údjango.db.modelsr   r   r   r?   r
   r<   r©   r¯   rÁ   r   r   r   ú<module>rÇ      sd   ðÝ &å .Ý 1ß 0Ñ 0áÓ€	÷)Fñ )FôX|B�;ô |Bô~ ô ô
WP˜ô WPôtÐ%6õ r   