o
    $6d~                     @   s4  d dl Z d dlZd dlZ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mZ d dlmZ ejdejd	Zd
e
deje defddZ		d dejeeje f dedeje dejegef fddZG dd deZG dd dZG dd dZG dd dZ G dd de Z!G dd de Z"dS )!    N)	urlencode)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponseResponse)	WebSocket_CallableType)boundconnscopesreturnc                 C   s    |D ]}|| j jvr dS qdS )NFT)authr   )r   r   scope r   oC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\starlette/authentication.pyhas_required_scope   s
   r     status_coderedirectc                    s:   t | tr| gnt| dtjdtjf fdd}|S )Nfuncr   c                    s   t  }t|j D ]\}|jdks|jdkr|j} n	qtd  d|dkrDt dt	j
dt	j
dd f fdd	}|S t rbt dt	j
dt	j
dtf fd
d}|S t dt	j
dt	j
dtf fdd}|S )Nrequest	websocketz2No "request" or "websocket" argument on function ""argskwargsr   c                     sd   | dt| k r|  nd }t|tsJ t|s&| I d H  d S  | i |I d H  d S )Nr   )getlen
isinstancer	   r   close)r   r   r   )r   idxscopes_listr   r   websocket_wrapper*   s   
z6requires.<locals>.decorator.<locals>.websocket_wrapperc                     s   | dt| k r|  nd }t|tsJ t|s?d ur:tdt|ji}dj|	|d}t
|ddS td | i |I d H S Nr   nextz{redirect_path}?{orig_request})Zredirect_pathZorig_requesti/  )urlr   )r   r   r   r   r   r   r   strr&   formatZurl_forr   r   r   r   r   Zorig_request_qparamZnext_urlr   r!   r   r"   r   r   r   async_wrapper<   s    

z2requires.<locals>.decorator.<locals>.async_wrapperc                     s   | dt| k r|  nd }t|tsJ t|s>d ur9tdt|ji}dj|	|d}t
|ddS td | i |S r$   r'   r*   r+   r   r   sync_wrapperR   s    

z1requires.<locals>.decorator.<locals>.sync_wrapper)inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapstypingAnyr   r   )r   sigZ	parametertype_r#   r,   r-   r   r"   r   )r   r!   r   	decorator   s@   

(zrequires.<locals>.decorator)r   r(   listr7   Callable)r   r   r   r<   r   r;   r   requires   s   Gr?   c                   @   s   e Zd ZdS )AuthenticationErrorN)__name__
__module____qualname__r   r   r   r   r@   g   s    r@   c                   @   s*   e Zd Zdedejejd  fddZdS )AuthenticationBackendr   r   )AuthCredentialsBaseUserc                    s   t  NNotImplementedError)selfr   r   r   r   authenticatel   s   z"AuthenticationBackend.authenticateN)rA   rB   rC   r   r7   OptionalTuplerK   r   r   r   r   rD   k   s    rD   c                   @   s(   e Zd Zddejeje  fddZdS )rE   Nr   c                 C   s    |d u r	g | _d S t || _d S rG   )r=   r   )rJ   r   r   r   r   __init__s   s    zAuthCredentials.__init__rG   )rA   rB   rC   r7   rL   Sequencer(   rN   r   r   r   r   rE   r   s     rE   c                   @   sB   e Zd ZedefddZedefddZedefddZdS )	rF   r   c                 C      t  rG   rH   rJ   r   r   r   is_authenticatedx      zBaseUser.is_authenticatedc                 C   rP   rG   rH   rQ   r   r   r   display_name|   rS   zBaseUser.display_namec                 C   rP   rG   rH   rQ   r   r   r   identity   rS   zBaseUser.identityN)	rA   rB   rC   propertyboolrR   r(   rT   rU   r   r   r   r   rF   w   s    rF   c                   @   sB   e Zd ZdeddfddZedefddZedefdd	ZdS )

SimpleUserusernamer   Nc                 C   s
   || _ d S rG   rY   )rJ   rY   r   r   r   rN      s   
zSimpleUser.__init__c                 C      dS )NTr   rQ   r   r   r   rR         zSimpleUser.is_authenticatedc                 C   s   | j S rG   rZ   rQ   r   r   r   rT      rS   zSimpleUser.display_name)	rA   rB   rC   r(   rN   rV   rW   rR   rT   r   r   r   r   rX      s    rX   c                   @   s0   e Zd ZedefddZedefddZdS )UnauthenticatedUserr   c                 C   r[   )NFr   rQ   r   r   r   rR      r\   z$UnauthenticatedUser.is_authenticatedc                 C   r[   )N r   rQ   r   r   r   rT      r\   z UnauthenticatedUser.display_nameN)rA   rB   rC   rV   rW   rR   r(   rT   r   r   r   r   r]      s
    r]   )r   N)#r5   r.   r7   urllib.parser   Zstarlette._utilsr   Zstarlette.exceptionsr   Zstarlette.requestsr   r   Zstarlette.responsesr   r   Zstarlette.websocketsr	   TypeVarr>   r
   rO   r(   rW   r   UnionintrL   r?   r4   r@   rD   rE   rF   rX   r]   r   r   r   r   <module>   s8    	
Q