
    =h                     X   d dl Z d dlZd dlZd dlZd dlmZ ej                  dk\  rd dlmZ nd dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZ d d	lmZ  ed
      Zdedej*                  e   defdZ	 	 ddej2                  eej*                  e   f   dedej6                  e   dej8                  ej8                  eej:                  f   gej8                  eej:                  f   f   fdZ G d de      Z  G d d      Z! G d d      Z" G d d      Z# G d de#      Z$ G d de#      Z%y)    N)	urlencode)   
   )	ParamSpec)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponse)	WebSocket_Pconnscopesreturnc                 F    |D ]  }|| j                   j                  vs y y)NFT)authr   )r   r   scopes      h/var/www/html/phonemate/phone_mate_backend/venv/lib/python3.12/site-packages/starlette/authentication.pyhas_required_scoper      s&    		(((      status_coderedirectc                     t        | t              r| gn
t        |       dt        j                  t
        t        j                  f   dt        j                  t
        t        j                  f   ffd}|S )Nfuncr   c                     t        j                         }t        |j                  j	                               D ]1  \  }|j
                  dk(  s|j
                  dk(  s%|j
                  } n t        d  d      |dk(  rDt        j                         dt        j                  dt        j                  dd f 	fd       }|S t               rTt        j                         dt        j                  dt        j                  dt        j                  f 	
fd	       }|S t        j                         dt        j                  dt        j                  dt        j                  f 	
fd
       }|S )Nrequest	websocketz2No "request" or "websocket" argument on function ""argskwargsr   c                     K   |j                  dt        |       k  r|    nd       }t        |t              sJ t	        |      s|j                          d {    y  | i | d {    y 7 7 w)Nr   )getlen
isinstancer   r   close)r   r    r   r   idxscopes_lists      r   websocket_wrapperz6requires.<locals>.decorator.<locals>.websocket_wrapper4   sr     "JJcCIoc4	 ")Y777))[A#//+++//// ,/s$   AA5A1A5+A3,A53A5c                  p  K   |j                  dt        |       k  r|    nd       }t        |t              sJ t	        |      s]Ot        dt        |j                        i      }dj                  |j                        |      }t        |d      S t        	       | i | d {   S 7 wNr   nextz{redirect_path}?{orig_request})redirect_pathorig_requesti/  )urlr   )r   r"   r#   r$   r
   r   r   strr.   formaturl_forr   r   
r   r    r   orig_request_qparamnext_urlr   r&   r   r'   r   s
        r   async_wrapperz2requires.<locals>.decorator.<locals>.async_wrapperD   s      **YS3t9_S	RVW!'7333)';?+.7W[[AQ8R.S+#C#J#J*1//(*C)< $K $  0H#NN'K@@!4262222s   B,B6/B40B6c                  T   |j                  dt        |       k  r|    nd       }t        |t              sJ t	        |      s]Ot        dt        |j                        i      }dj                  |j                        |      }t        |d      S t        	       | i |S r*   r/   r3   s
        r   sync_wrapperz1requires.<locals>.decorator.<locals>.sync_wrapperX   s     **YS3t9_S	RVW!'7333)';?+.7W[[AQ8R.S+#C#J#J*1//(*C)< $K $  0H#NN'K@@T,V,,r   )inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapsr   r   r    r   typingAny)r   sig	parametertype_r(   r6   r8   r&   r   r'   r   s   `      @r   	decoratorzrequires.<locals>.decorator%   s[    %'(=(=(?@NC~~*inn.K! A
 DTF!L  K__T"	0rww 	0")) 	0PT 	0 #	0 %$t$__T"3277 3bii 3FJJ 3 3 #3 !  __T"-BGG -ryy -VZZ - - #-  r   )r$   r0   listrB   Callabler   rC   )r   r   r   rG   r'   s    `` @r   requiresrJ      s^     )56(4<KC oob&**n-C 	VZZ	(C J r   c                       e Zd Zy)AuthenticationErrorN)__name__
__module____qualname__ r   r   rL   rL   m   s    r   rL   c                   P    e Zd Zdedej
                  ej                  d      fdZy)AuthenticationBackendr   r   )AuthCredentialsBaseUserc                    K   t               wNNotImplementedError)selfr   s     r   authenticatez"AuthenticationBackend.authenticater   s      "##s   N)rM   rN   rO   r	   rB   OptionalTuplerZ   rP   r   r   rR   rR   q   s*    $"$	&CD	E$r   rR   c                   N    e Zd Zddej                  ej
                  e      fdZy)rS   Nr   c                 8    |g | _        y t        |      | _        y rV   )rH   r   )rY   r   s     r   __init__zAuthCredentials.__init__y   s    "NbVr   rV   )rM   rN   rO   rB   r[   Sequencer0   r_   rP   r   r   rS   rS   x   s     =vvs/CD =r   rS   c                   N    e Zd Zedefd       Zedefd       Zedefd       Zy)rT   r   c                     t               rV   rW   rY   s    r   is_authenticatedzBaseUser.is_authenticated~       !##r   c                     t               rV   rW   rc   s    r   display_namezBaseUser.display_name   re   r   c                     t               rV   rW   rc   s    r   identityzBaseUser.identity   re   r   N)	rM   rN   rO   propertyboolrd   r0   rg   ri   rP   r   r   rT   rT   }   sQ    $$ $ $ $c $ $ $# $ $r   rT   c                   H    e Zd ZdeddfdZedefd       Zedefd       Zy)
SimpleUserusernamer   Nc                     || _         y rV   rn   )rY   rn   s     r   r_   zSimpleUser.__init__   s	     r   c                      y)NTrP   rc   s    r   rd   zSimpleUser.is_authenticated   s    r   c                     | j                   S rV   rp   rc   s    r   rg   zSimpleUser.display_name   s    }}r   )	rM   rN   rO   r0   r_   rj   rk   rd   rg   rP   r   r   rm   rm      sK    ! ! ! $   c  r   rm   c                   8    e Zd Zedefd       Zedefd       Zy)UnauthenticatedUserr   c                      y)NFrP   rc   s    r   rd   z$UnauthenticatedUser.is_authenticated   s    r   c                      y)N rP   rc   s    r   rg   z UnauthenticatedUser.display_name   s    r   N)rM   rN   rO   rj   rk   rd   r0   rg   rP   r   r   rt   rt      s6    $   c  r   rt   )i  N)&r@   r9   sysrB   urllib.parser   version_infor   typing_extensionsstarlette._utilsr   starlette.exceptionsr   starlette.requestsr	   r
   starlette.responsesr   starlette.websocketsr   r   r`   r0   rk   r   Unionintr[   rI   rC   rJ   r?   rL   rR   rS   rT   rm   rt   rP   r   r   <module>r      s2     
  "w + . . 6 0 *t_^ V__S5I d  %)NLLfooc223NN ooc"N ____R^$%vr6::~'FF	Nb	) 	$ $= =
$ $
 
( r   