
    BvhY                     |    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y
)    )Dict)HTTPException)override)AuthzActionAuthzResourceServerAuthenticationProviderServerAuthorizationProviderUserIdentity)Systemc                   4    e Zd ZdZedeeef   defd       Zy)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                 <    t        d|j                  dd             S )Ntestzx-tenant)user_idtenant)r
   get)selfr   s     X/RAG/venv/lib/python3.12/site-packages/chromadb/test/client/test_database_tenant_auth.pyauthenticate_or_raisez3ExampleAuthenticationProvider.authenticate_or_raise   s     ;;z40
 	
    N)	__name__
__module____qualname____doc__r   r   strr
   r    r   r   r   r      s0     e
T#s(^ 
 
 
r   r   c            	       N     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                 F    t         |   |       |j                  | _        y )N)super__init__settings	_settings)r   r!   	__class__s     r   r$   z%ExampleAuthorizationProvider.__init__   s     r   useractionresourcec                     |j                   y |t        j                  k(  ry |j                   |j                   k7  rt        dd      y )Ni  Unauthorized)status_codedetail)r   r   RESETr   )r   r(   r)   r*   s       r   authorize_or_raisez/ExampleAuthorizationProvider.authorize_or_raise    sD     ;;[&&&;;(//)CGG *r   )r   r   r   r   r   r$   r   r
   r   r   r0   __classcell__)r'   s   @r   r    r       sS    _)v )$ ) 
H 
H*5
HAN
H	
H 
Hr   r    N)typingr   fastapir   	overridesr   chromadb.authr   r   r   r	   r
   chromadb.configr   r   r    r   r   r   <module>r7      s9     !   #
$@ 
H#> Hr   