ó
    \š‘h§2  ã                   ó¶   • S SK Jr  S SKJr  S SKJr  S SKJrJr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)é    )Úsync_to_async)Úget_user_model)Ú
Permission)ÚExistsÚOuterRefÚQc                   ó|   • \ rS rS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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      Ú`C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\django/contrib/auth/backends.pyÚauthenticateÚBaseBackend.authenticate   ó   € Øó    c              ‹   óV   #   • [        U R                  5      " U40 UD6I S h  v•N $  N7fr   )r   r   r   s      r   ÚaauthenticateÚBaseBackend.aauthenticate   s&   é € Ü" 4×#4Ñ#4Ô5°gÑHÀÑH×HÐHÑHùó   ‚ )¢'£)c                 ó   • g r   r   ©r   Úuser_ids     r   Úget_userÚBaseBackend.get_user   r   r   c              ƒ   óT   #   • [        U R                  5      " U5      I S h  v•N $  N7fr   )r   r   r   s     r   Ú	aget_userÚBaseBackend.aget_user   s   é € Ü" 4§=¡=Ô1°'Ó:×:Ð:Ñ:ùó   ‚(¡&¢(Nc                 ó   • [        5       $ r   ©Úset©r   Úuser_objÚobjs      r   Úget_user_permissionsÚ BaseBackend.get_user_permissions   ó	   € Ü‹uˆr   c              ƒ   óT   #   • [        U R                  5      " X5      I S h  v•N $  N7fr   )r   r+   r(   s      r   Úaget_user_permissionsÚ!BaseBackend.aget_user_permissions   s!   é € Ü" 4×#<Ñ#<Ô=¸hÓL×LÐLÑLùr$   c                 ó   • [        5       $ r   r&   r(   s      r   Úget_group_permissionsÚ!BaseBackend.get_group_permissions   r-   r   c              ƒ   óT   #   • [        U R                  5      " X5      I S h  v•N $  N7fr   )r   r2   r(   s      r   Úaget_group_permissionsÚ"BaseBackend.aget_group_permissions    s!   é € Ü" 4×#=Ñ#=Ô>¸xÓM×MÐMÑMùr$   c                 óB   • 1 U R                  XS9kU R                  XS9k$ ©N)r*   )r+   r2   r(   s      r   Úget_all_permissionsÚBaseBackend.get_all_permissions#   s8   € ð
Ø×&Ñ& xÐ&Ð9ð
à×'Ñ'¨Ð'Ð:ð
ð 	
r   c              ƒ   ór   #   • 1 U R                  XS9I S h  v•N kU R                  XS9I S h  v•N k$  N N7fr8   )r/   r5   r(   s      r   Úaget_all_permissionsÚ BaseBackend.aget_all_permissions)   sG   é € ð
Ø×-Ñ-¨hÐ-Ð@×@ð
à×.Ñ.¨xÐ.ÐA×Að
ð 	
Ù@ÙAùs   ‚7–3—7­5®7µ7c                 ó$   • X R                  XS9;   $ r8   )r9   ©r   r)   Úpermr*   s       r   Úhas_permÚBaseBackend.has_perm/   s   € Ø×/Ñ/°Ð/ÐBÑBÐBr   c              ƒ   óD   #   • X R                  X5      I S h  v•N ;   $  N7fr   )r<   r?   s       r   Ú	ahas_permÚBaseBackend.ahas_perm2   s   é € Ø×6Ñ6°xÓE×EÑEÐEÑEùs   ‚ —˜ r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r"   r+   r/   r2   r5   r9   r<   rA   rD   Ú__static_attributes__r   r   r   r
   r
   
   sC   † òòIòò;ôôMôôNô
ô
ôC÷Fr   r
   c                   óÌ   ^ • \ rS rSrSrSS jrSS jrS 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U 4S jjrSU 4S jjrSU 4S jjrS rS rSS jrS rS rSrU =r$ )ÚModelBackendé6   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c  UR                  [        R                  5      nUb  Uc  g  [        R                  R	                  U5      I S h  v•N nUR                  U5      I S h  v•N (       a  U R                  U5      (       a  U$ g g  N< N%! [        R                   a    [        5       R                  U5         g f = f7fr   )	rO   rP   rQ   rR   Úaget_by_natural_keyÚacheck_passwordrU   rV   rW   rX   s         r   r   ÚModelBackend.aauthenticateJ   s¸   é € ØÑØ—z‘z¤)×":Ñ":Ó;ˆHØÑ˜xÑ/Øð
	Ü"×3Ñ3×GÑGÈÓQ×QˆDð ×)Ñ)¨(Ó3×3Õ3¸×8RÑ8RØ÷9ñ 9ð �ð9Ð3ñ Rñ 4øô ×%Ñ%ó 	/ô ‹K×$Ñ$ XÖ.ð	/üsL   ‚*C­"B ÁBÁB ÁCÁ(BÁ)#CÂB ÂCÂ-C Â=CÂ?C Ã C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   r[   s     r   rU   Ú"ModelBackend.user_can_authenticate[   s   € ô
 �t˜[¨$Ó/Ð/r   c                 ó6   • UR                   R                  5       $ r   )Úuser_permissionsÚall©r   r)   s     r   Ú_get_user_permissionsÚ"ModelBackend._get_user_permissionsb   s   € Ø×(Ñ(×,Ñ,Ó.Ð.r   c                 ól   • [         R                  R                  UR                  R	                  5       S9$ )N)Ú	group__in)r   ÚobjectsÚfilterÚgroupsrh   ri   s     r   Ú_get_group_permissionsÚ#ModelBackend._get_group_permissionse   s)   € Ü×!Ñ!×(Ñ(°8·?±?×3FÑ3FÓ3HÐ(Ð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.
ú_%s_perm_cacheú_get_%s_permissionsÚcontent_type__app_labelÚcodenameÚ.©rb   Úis_anonymousr'   ÚhasattrÚis_superuserr   rn   rh   rc   Úvalues_listÚorder_byÚsetattr©r   r)   r*   Ú	from_nameÚperm_cache_nameÚpermsÚctÚnames           r   Ú_get_permissionsÚModelBackend._get_permissionsh   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                   (       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[        UUU VVs1 s Sh  v•N u  pgU< SU< 3iM  [        X5      $  N
 Os  snnf snn5        N7f)zSee _get_permissions().Nrt   ru   rv   rw   rx   ry   r€   s           r   Ú_aget_permissionsÚModelBackend._aget_permissions}   s½   é € à×!×! X×%:×%:¸c¹oÜ“5ˆLà*¨YÑ6ˆÜ�x×1Ñ1Ø×$×$Ü"×*Ñ*×.Ñ.Ó0‘ä Ð&;¸iÑ&GÔHÈÓR�Ø×%Ñ%Ð&?ÀÓL×UÑUÓWˆEÜØØÙ<A×BÔB±°›B¢Ó%ä�xÓ1Ð1ó CùÖBõùs<   ‚B6C.Â8CÂ:CÂ>CÂ?CÃCÃC.ÃCÃCÃC.c                 ó&   • U R                  XS5      $ )z[
Return a set of permission strings the user `user_obj` has from their
`user_permissions`.
r[   ©r†   r(   s      r   r+   Ú!ModelBackend.get_user_permissions�   s   € ð
 ×$Ñ$ X°FÓ;Ð;r   c              ƒ   óB   #   • U R                  XS5      I Sh  v•N $  N7f)zSee get_user_permissions().r[   N©r‰   r(   s      r   r/   Ú"ModelBackend.aget_user_permissions—   s   é € à×+Ñ+¨H¸6ÓB×BÐBÑBùó   ‚˜™c                 ó&   • U R                  XS5      $ )zY
Return a set of permission strings the user `user_obj` has from the
groups they belong.
ÚgrouprŒ   r(   s      r   r2   Ú"ModelBackend.get_group_permissions›   s   € ð
 ×$Ñ$ X°GÓ<Ð<r   c              ƒ   óB   #   • U R                  XS5      I Sh  v•N $  N7f)zSee get_group_permissions().r“   Nr�   r(   s      r   r5   Ú#ModelBackend.aget_group_permissions¢   s   é € à×+Ñ+¨H¸7ÓC×CÐCÑCù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)rb   rz   r'   r{   Úsuperr9   r˜   )r   r)   r*   Ú	__class__s      €r   r9   Ú ModelBackend.get_all_permissions¦   sJ   ø€ Ø×!×! X×%:×%:¸c¹oÜ“5ˆLÜ�x ×/Ñ/Ü#(¡7Ñ#>¸xÓ#HˆHÔ Ø×#Ñ#Ð#r   c                 óF   >• UR                   =(       a    [        TU ]	  XUS9$ r8   )rb   r™   rA   ©r   r)   r@   r*   rš   s       €r   rA   ÚModelBackend.has_perm­   s#   ø€ Ø×!Ñ!×O¤e¡gÑ&6°xÈ3Ð&6Ð&OÐOr   c              ƒ   ób   >#   • UR                   =(       a    [        TU ]	  XUS9I S h  v•N $  N7fr8   )rb   r™   rD   r�   s       €r   rD   ÚModelBackend.ahas_perm°   s-   øé € Ø×!Ñ!×V¬E©GÑ,=¸hÐRUÐ,=Ð,V×&VÐVÑ&Vùs   ƒ%/¨-©/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©Nrx   ©Úindex©Ú.0r@   Ú	app_labels     €r   Ú	<genexpr>Ú0ModelBackend.has_module_perms.<locals>.<genexpr>·   s-   øé € ð *
â:�ð Ð"�4—:‘:˜c“?Ð# yÖ0Ú:ùó   ƒ$')rb   Úanyr9   ©r   r)   r¨   s     `r   Úhas_module_permsÚModelBackend.has_module_perms³   s7   ø€ ð ×!Ñ!÷ 
¤cô *
à×0Ñ0°Ô:ó*
ó '
ð 	
r   c              ƒ   óŽ   ^#   • UR                   =(       a,    [        U4S jU R                  U5      I Sh  v•N  5       5      $  N7f)zSee has_module_perms()c              3   óR   >#   • U  H  nUS UR                  S5       T:H  v •  M     g 7fr£   r¤   r¦   s     €r   r©   Ú1ModelBackend.ahas_module_perms.<locals>.<genexpr>¾   s-   øé € ð *
âA�ð Ð"�4—:‘:˜c“?Ð# yÖ0ÚAùr«   N)rb   r¬   r<   r­   s     `r   Úahas_module_permsÚModelBackend.ahas_module_perms¼   sA   øé € à×!Ñ!÷ 
¤cô *
à"×7Ñ7¸ÓA×AÐAó*
ó '
ð 	
áAùs   ƒ2AµA
¶A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.
rx   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)r[   ©r¶   )rw   rv   T)r|   )rb   )Ú
isinstanceÚstrÚsplitÚ
ValueErrorr   Ú	TypeErrorrP   rR   Únoner   r   r¶   r   rn   ro   )	r   r@   rb   Úinclude_superusersr*   r¨   rw   Ú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¸   )rP   rR   rO   rV   rU   ©r   r   r[   s      r   r   ÚModelBackend.get_useræ   sW   € ð	Ü×-Ñ-×1Ñ1°WÐ1Ð=ˆDð ×1Ñ1°$×7Ñ7ˆtÐA¸TÐAøô ×%Ñ%ó 	Ùð	ús   ‚9 ¹AÁAc              ƒ   óÂ   #   •  [         R                  R                  US9I S h  v•N nU R	                  U5      (       a  U$ S $  N! [         R                   a     g f = f7frÅ   )rP   rR   ÚagetrV   rU   rÆ   s      r   r"   ÚModelBackend.aget_userí   s`   é € ð	Ü"×3Ñ3×8Ñ8¸GÐ8ÐD×DˆDð ×1Ñ1°$×7Ñ7ˆtÐA¸TÐAñ EøÜ×%Ñ%ó 	Ùð	üs7   ‚A„ A ¤A¥A ©AÁA ÁAÁAÁAÁAr   )NNr   )TTN)rF   rG   rH   rI   Ú__doc__r   r   rU   rj   rq   r†   r‰   r+   r/   r2   r5   r9   rA   rD   r®   r³   rÂ   r   r"   rJ   Ú__classcell__)rš   s   @r   rL   rL   6   su   ø† ñôôò"0ò/òJò2ò*2ô&<ôCô=ôD÷$÷P÷Wò
ò
ô!9òFB÷Bð Br   rL   c                   ó   • \ rS rSrS rSrg)ÚAllowAllUsersModelBackendéõ   c                 ó   • g©NTr   rd   s     r   rU   Ú/AllowAllUsersModelBackend.user_can_authenticateö   r   r   r   N©rF   rG   rH   rI   rU   rJ   r   r   r   rÎ   rÎ   õ   ó   † õr   rÎ   c                   óB   • \ rS rSrSrSrS rS rS rSS j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                 óŒ  • 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                  XUS9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©Úcreatedr   )
Úclean_usernameÚcreate_unknown_userrP   rR   Úget_or_createrQ   rS   rV   Úconfigure_userrU   ©r   r   Úremote_userrÚ   r[   rY   s         r   r   ÚRemoteUserBackend.authenticate	  sÃ   € ö ØØˆØˆØ×&Ñ& {Ó3ˆð
 ×#×#Ü%×6Ñ6×DÒDñ Ü×+Ñ+¨XÐ6ñ‰MˆD�'ðÜ ×1Ñ1×DÑDÀXÓN�ð ×"Ñ" 7¸'Ð"ÐBˆØ×1Ñ1°$×7Ñ7ˆtÐA¸TÐAøô ×)Ñ)ó Ùðús   Á#B, Â,CÃCc              ƒ   óÐ  #   • U(       d  gSnSnU R                  U5      nU R                  (       a;  [        R                  R                  " S0 [        R
                  U0D6I Sh  v•N u  pCO( [        R                  R                  U5      I Sh  v•N nU R                  XUS9I Sh  v•N nU R                  U5      (       a  U$ S$  Na N8! [        R                   a     NLf = f N<7f)zSee authenticate().NFrÙ   r   )
rÛ   rÜ   rP   rR   Úaget_or_createrQ   r^   rV   Úaconfigure_userrU   rß   s         r   r   ÚRemoteUserBackend.aauthenticate'  sÛ   é € æØØˆØˆØ×&Ñ& {Ó3ˆð
 ×#×#Ü"+×"<Ñ"<×"KÒ"Kñ #Ü×+Ñ+¨XÐ6ñ#÷ ‰MˆD�'ðÜ&×7Ñ7×KÑKÈHÓU×U�ð ×)Ñ)¨'ÀÐ)ÐI×IˆØ×1Ñ1°$×7Ñ7ˆtÐA¸TÐAññ
 VøÜ×)Ñ)ó ÙðúáIùsT   ‚A"C&Á$CÁ%C&Á-"C
 ÂCÂC
 ÂC&Â'C$Â(C&ÃC
 Ã
C!ÃC&Ã C!Ã!C&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   rY   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   r[   rÚ   s       r   rÞ   Ú RemoteUserBackend.configure_userG  s	   € ð ˆr   c              ƒ   óV   #   • [        U R                  5      " XU5      I Sh  v•N $  N7f)zSee configure_user()N)r   rÞ   ré   s       r   rä   Ú!RemoteUserBackend.aconfigure_userO  s#   é € ä" 4×#6Ñ#6Ô7¸ÀwÓO×OÐOÑOùr   r   N)T)rF   rG   rH   rI   rË   rÜ   r   r   rÛ   rÞ   rä   rJ   r   r   r   rÖ   rÖ   ú   s+   † ñ	ð ÐòBò<Bò.ô÷Pr   rÖ   c                   ó   • \ rS rSrS rSrg)ÚAllowAllUsersRemoteUserBackendiT  c                 ó   • grÑ   r   rd   s     r   rU   Ú4AllowAllUsersRemoteUserBackend.user_can_authenticateU  r   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   rP   r
   rL   rÎ   rÖ   rî   r   r   r   Ú<module>rõ      sd   ðÝ &å .Ý 1ß 0Ñ 0áÓ€	÷)Fñ )FôX|B�;ô |Bô~ ô ô
WP˜ô WPôtÐ%6õ r   