
    _jY                         d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZ d dlmZ  G d de	          Z G d d	e
          Zd
S )    )Dict)HTTPException)override)AuthzActionAuthzResourceServerAuthenticationProviderServerAuthorizationProviderUserIdentity)Systemc                   B    e Zd ZdZedeeef         defd            ZdS )ExampleAuthenticationProviderzIn practice the tenant would likely be resolved from some other opaque value (e.g. key/token). Here, it's just passed directly as a header for simplicity.headersreturnc                 L    t          d|                    dd                     S )Ntestzx-tenant)user_idtenant)r
   get)selfr   s     k/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/chromadb/test/client/test_database_tenant_auth.pyauthenticate_or_raisez3ExampleAuthenticationProvider.authenticate_or_raise   s-    ;;z400
 
 
 	
    N)	__name__
__module____qualname____doc__r   r   strr
   r    r   r   r   r      sT         e  e
T#s(^ 
 
 
 
 X
 
 
r   r   c            	       T     e Zd ZdZdeddf fdZededede	ddfd	            Z
 xZS )
ExampleAuthorizationProviderzUA simple authz provider that asserts the user's tenant matches the resource's tenant.systemr   Nc                 b    t                                          |           |j        | _        d S )N)super__init__settings	_settings)r   r!   	__class__s     r   r$   z%ExampleAuthorizationProvider.__init__   s(       r   useractionresourcec                 ~    |j         d S |t          j        k    rd S |j         |j         k    rt          dd          d S )Ni  Unauthorized)status_codedetail)r   r   RESETr   )r   r(   r)   r*   s       r   authorize_or_raisez/ExampleAuthorizationProvider.authorize_or_raise    sN     ;F[&&&F;(/))CGGGG *)r   )r   r   r   r   r   r$   r   r
   r   r   r0   __classcell__)r'   s   @r   r    r       s        __)v )$ ) ) ) ) ) ) 
H 
H*5
HAN
H	
H 
H 
H X
H 
H 
H 
H 
Hr   r    N)typingr   fastapir   	overridesr   chromadb.authr   r   r   r	   r
   chromadb.configr   r   r    r   r   r   <module>r7      s          ! ! ! ! ! !                    # " " " " "
 
 
 
 
$@ 
 
 
H H H H H#> H H H H Hr   