ó
    ²Rj$  ã                   óÊ   • S SK r S SKJr  S SKJr  S SKJrJrJr  S SK	J
r
  S SKJr  \" 5       r " S S5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      rg)é    N)Úget_user_model)Ú
Permission)ÚExistsÚOuterRefÚQ)ÚRemovedInDjango50Warning)Úfunc_supports_parameterc                   óH   • \ rS rSrS rS rS
S jrS
S jrS
S jrS
S jr	S	r
g)ÚBaseBackendé   c                 ó   • g ©N© )ÚselfÚrequestÚkwargss      ÚHD:\diplom_project\venv\Lib\site-packages\django/contrib/auth/backends.pyÚauthenticateÚBaseBackend.authenticate   ó   € Øó    c                 ó   • g r   r   )r   Úuser_ids     r   Úget_userÚBaseBackend.get_user   r   r   Nc                 ó   • [        5       $ r   ©Úset©r   Úuser_objÚobjs      r   Úget_user_permissionsÚ BaseBackend.get_user_permissions   ó	   € Ü‹uˆr   c                 ó   • [        5       $ r   r   r   s      r   Úget_group_permissionsÚ!BaseBackend.get_group_permissions   r$   r   c                 óB   • 1 U R                  XS9kU R                  XS9k$ ©N)r!   )r"   r&   r   s      r   Úget_all_permissionsÚBaseBackend.get_all_permissions   s8   € ð
Ø×&Ñ& xÐ&Ð9ð
à×'Ñ'¨Ð'Ð:ð
ð 	
r   c                 ó$   • X R                  XS9;   $ r)   )r*   )r   r    Úpermr!   s       r   Úhas_permÚBaseBackend.has_perm   s   € Ø×/Ñ/°Ð/ÐBÑBÐBr   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r"   r&   r*   r.   Ú__static_attributes__r   r   r   r   r      s!   † òòôôô
÷Cr   r   c                   óŒ   ^ • \ rS rSrSrSS jrS rS rS rS r	SS jr
SS	 jrSU 4S
 jjrSU 4S jjrS rSS jrS rSrU =r$ )ÚModelBackendé#   z1
Authenticates against settings.AUTH_USER_MODEL.
c                 óZ  • Uc  UR                  [        R                  5      nUb  Uc  g  [        R                  R	                  U5      nUR                  U5      (       a  U R                  U5      (       a  U$ g g ! [        R                   a    [        5       R                  U5         g f = f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   ÚModelBackend.authenticate(   sŸ   € ØÑØ—z‘z¤)×":Ñ":Ó;ˆHØÑ˜xÑ/Øð	Ü×-Ñ-×@Ñ@ÀÓJˆDð ×"Ñ" 8×,Ñ,°×1KÑ1KÈD×1QÑ1QØ�ð 2RÐ,øô ×%Ñ%ó 	/ô ‹K×$Ñ$ XÖ.ð	/ús   «A: Á:-B*Â)B*c                 ó   • [        USS5      $ )zc
Reject users with is_active=False. Custom user models that don't have
that attribute are allowed.
Ú	is_activeT)Úgetattr©r   rD   s     r   r?   Ú"ModelBackend.user_can_authenticate7   s   € ô
 �t˜[¨$Ó/Ð/r   c                 ó6   • UR                   R                  5       $ r   )Úuser_permissionsÚall)r   r    s     r   Ú_get_user_permissionsÚ"ModelBackend._get_user_permissions>   s   € Ø×(Ñ(×,Ñ,Ó.Ð.r   c                 ó°   • [        5       R                  R                  S5      nSUR                  5       -  n[        R
                  R                  " S0 X10D6$ )NÚgroupsz	group__%sr   )r   Ú_metaÚ	get_fieldÚrelated_query_namer   ÚobjectsÚfilter)r   r    Úuser_groups_fieldÚuser_groups_querys       r   Ú_get_group_permissionsÚ#ModelBackend._get_group_permissionsA   sO   € Ü*Ó,×2Ñ2×<Ñ<¸XÓFÐØ'Ð*;×*NÑ*NÓ*PÑPÐÜ×!Ñ!×(Ò(ÑIÐ,=Ð+HÑIÐIr   c                 óÆ  • UR                   (       a  UR                  (       d  Ub
  [        5       $ SU-  n[        X5      (       d�  UR                  (       a  [
        R                  R                  5       nO[        U SU-  5      " U5      nUR                  SS5      R                  5       n[        XU VVs1 s H  u  pgU< SU< 3iM     snn5        [        X5      $ s  snnf )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Ú.)rG   Úis_anonymousr   ÚhasattrÚis_superuserr   rU   rM   rH   Úvalues_listÚorder_byÚsetattr)r   r    r!   Ú	from_nameÚperm_cache_nameÚpermsÚctÚnames           r   Ú_get_permissionsÚModelBackend._get_permissionsF   s¾   € ð ×!×! X×%:×%:¸c¹oÜ“5ˆLà*¨YÑ6ˆÜ�x×1Ñ1Ø×$×$Ü"×*Ñ*×.Ñ.Ó0‘ä Ð&;¸iÑ&GÔHÈÓR�Ø×%Ñ%Ð&?ÀÓL×UÑUÓWˆEÜØÑQVÔ+WÒQVÁXÀR³rº4Ó,@ÑQVÒ+Wôô �xÓ1Ð1ùó ,Xs   Â5Cc                 ó&   • U R                  XS5      $ )z[
Return a set of permission strings the user `user_obj` has from their
`user_permissions`.
rD   ©rj   r   s      r   r"   Ú!ModelBackend.get_user_permissions[   s   € ð
 ×$Ñ$ X°FÓ;Ð;r   c                 ó&   • U R                  XS5      $ )zY
Return a set of permission strings the user `user_obj` has from the
groups they belong.
Úgrouprm   r   s      r   r&   Ú"ModelBackend.get_group_permissionsb   s   € ð
 ×$Ñ$ X°GÓ<Ð<r   c                 óÄ   >• UR                   (       a  UR                  (       d  Ub
  [        5       $ [        US5      (       d  [        TU ]  U5      Ul        UR                  $ )NÚ_perm_cache)rG   r_   r   r`   Úsuperr*   rs   )r   r    r!   Ú	__class__s      €r   r*   Ú ModelBackend.get_all_permissionsi   sJ   ø€ Ø×!×! X×%:×%:¸c¹oÜ“5ˆLÜ�x ×/Ñ/Ü#(¡7Ñ#>¸xÓ#HˆHÔ Ø×#Ñ#Ð#r   c                 óF   >• UR                   =(       a    [        TU ]	  XUS9$ r)   )rG   rt   r.   )r   r    r-   r!   ru   s       €r   r.   ÚModelBackend.has_permp   s#   ø€ Ø×!Ñ!×O¤e¡gÑ&6°xÈ3Ð&6Ð&OÐOr   c                 ór   ^• UR                   =(       a$    [        U4S jU R                  U5       5       5      $ )zE
Return True if user_obj has any permissions in the given app_label.
c              3   óR   >#   • U  H  nUS UR                  S5       T:H  v •  M     g 7f)Nr^   )Úindex)Ú.0r-   Ú	app_labels     €r   Ú	<genexpr>Ú0ModelBackend.has_module_perms.<locals>.<genexpr>w   s-   øé € ð *
â:�ð Ð"�4—:‘:˜c“?Ð# yÖ0Ú:ùs   ƒ$')rG   Úanyr*   )r   r    r}   s     `r   Úhas_module_permsÚModelBackend.has_module_permss   s7   ø€ ð ×!Ñ!÷ 
¤cô *
à×0Ñ0°Ô:ó*
ó '
ð 	
r   c                 ó˜  • [        U[        5      (       a   UR                  S5      u  pVO [        U[        5      (       d  [        S5      eUb  [        R                  R                  5       $ [        [        S5      S9[        [        S5      S9-  n[        U[        5      (       a  U[        UR                  S9-  nOU[        WWS9-  n[        [        R                  R                  U5      5      nU(       a  U[        S	S
9-  nUb  U[        US9-  n[        R                  R                  U5      $ ! [         a    [        S5      ef = f)zi
Return users that have permission "perm". By default, filter out
inactive users and include superusers.
r^   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)rD   ©r„   )r]   r\   T)ra   )rG   )Ú
isinstanceÚstrÚsplitÚ
ValueErrorr   Ú	TypeErrorr:   r<   Únoner   r   r„   r   rU   rV   )	r   r-   rG   Úinclude_superusersr!   r}   r]   Úpermission_qÚuser_qs	            r   Ú	with_permÚ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   —D3 Ä3E	c                 ó¦   •  [         R                  R                  US9nU R	                  U5      (       a  U$ S $ ! [         R                   a     g f = f)Nr†   )r:   r<   r9   r@   r?   )r   r   rD   s      r   r   ÚModelBackend.get_userŸ   sW   € ð	Ü×-Ñ-×1Ñ1°WÐ1Ð=ˆDð ×1Ñ1°$×7Ñ7ˆtÐA¸TÐAøô ×%Ñ%ó 	Ùð	ús   ‚9 ¹AÁAr   )NNr   )TTN)r0   r1   r2   r3   Ú__doc__r   r?   rN   rY   rj   r"   r&   r*   r.   r�   r�   r   r4   Ú__classcell__)ru   s   @r   r6   r6   #   sN   ø† ñôò0ò/òJò
2ô*<ô=÷$÷Pò
ô!9÷FBð Br   r6   c                   ó   • \ rS rSrS rSrg)ÚAllowAllUsersModelBackendé§   c                 ó   • g©NTr   rI   s     r   r?   Ú/AllowAllUsersModelBackend.user_can_authenticate¨   r   r   r   N©r0   r1   r2   r3   r?   r4   r   r   r   r—   r—   §   ó   † õr   r—   c                   ó2   • \ rS rSrSrSrS rS rS	S jrSr	g)
ÚRemoteUserBackendé¬   a¦  
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                 óV  • U(       d  gSnSnU R                  U5      nU R                  (       a3  [        R                  R                  " S0 [        R
                  U0D6u  pCO  [        R                  R                  U5      n[        U R                  S5      (       a  U R                  XUS9nOI[        R                  " SU R                  R                   S3[        S9  U(       a  U R                  X5      nU R                  U5      (       a  U$ S$ ! [        R                   a     N¥f = f)	a9  
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_userr:   r<   Úget_or_creater;   r=   r@   r	   Úconfigure_userÚwarningsÚwarnru   r2   r   r?   )r   r   Úremote_userr¢   rD   rB   s         r   r   ÚRemoteUserBackend.authenticate»   s  € ö ØØˆØˆØ×&Ñ& {Ó3ˆð
 ×#×#Ü%×6Ñ6×DÒDñ Ü×+Ñ+¨XÐ6ñ‰MˆD�'ðÜ ×1Ñ1×DÑDÀXÓN�ô # 4×#6Ñ#6¸	×BÑBØ×&Ñ& w¸gÐ&ÐF‰Dä�MŠMØCØ—>‘>×.Ñ.Ð/Ð/AðCä1òö
 Ø×*Ñ*¨7Ó9�Ø×1Ñ1°$×7Ñ7ˆtÐA¸TÐAøô ×)Ñ)ó Ùðús   Á#D ÄD(Ä'D(c                 ó   • U$ )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   rB   s     r   r¤   Ú RemoteUserBackend.clean_usernameå   s	   € ð ˆr   c                 ó   • U$ )zX
Configure a user and return the updated user.

By default, return the user unmodified.
r   )r   r   rD   r¢   s       r   r§   Ú RemoteUserBackend.configure_userî   s	   € ð ˆr   r   N)T)
r0   r1   r2   r3   r”   r¥   r   r¤   r§   r4   r   r   r   rŸ   rŸ   ¬   s    † ñ	ð Ðò(BòT÷r   rŸ   c                   ó   • \ rS rSrS rSrg)ÚAllowAllUsersRemoteUserBackendé÷   c                 ó   • grš   r   rI   s     r   r?   Ú4AllowAllUsersRemoteUserBackend.user_can_authenticateø   r   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	   r:   r   r6   r—   rŸ   r±   r   r   r   Ú<module>rº      sg   ðÛ å .Ý 1ß 0Ñ 0Ý =Ý 8áÓ€	÷Cñ Cô.AB�;ô ABôH ô ô
H˜ô HôVÐ%6õ r   