
    hh2                         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      WD:\Anime\Ugyen\janka_web_project\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5g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Lr$   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Mr$   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
 	
@As   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6xEEEEEs     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$ )ModelBackend6   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    zz)":":;Hx/	--@@JD ""8,,1K1KD1Q1Q 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     zz)":":;Hx/
	"33GGQQD ))(3338R8R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??3F3F3H(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%:%:co5L*Y6x11$$"**..0&;i&GHR%%&?LUUWEQV+WQVXRr4,@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%:%:co5L*Y6x11$$"**..0&;i&GHR%%&?LUUWE<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    
 $$XF;;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     ++H6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    
 $$XG<<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     ++H7CCCCr   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%:%:co5Lx//#(7#>x#HH ###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#    !!Oeg&6x3&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-     !!VEG,=hRU,=,V&VV&Vs   %/-/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Ar   N)rb   r   r<   r   s     `r   ahas_module_permsModelBackend.ahas_module_perms   sA     !! 
c *
"77AAA*
 '
 	
As   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+   
 dC  &*jjo#	8 D*--P  ?--2244Xd^4qhtn7MMdJ''AM)LAxSSL
**11,?@aT**F a),,F))00883   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1W1=D 11$77tAT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8G8DDD 11$77tAT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

!9F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MD' 11DDXN ""7'"B11$77tAT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# MD'&77KKHUU ))')II11$77tATA
 V)) IsT   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Or   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   