o
    ưi                     @   sB   d Z ddlmZ ddlmZmZ ddlmZ dedefddZd	S )
a  
Example Custom SSO Handler

Use this if you want to run custom code after litellm has retrieved information from your IDP (Identity Provider).

Flow:
- User lands on Admin UI
- LiteLLM redirects user to your SSO provider
- Your SSO provider redirects user back to LiteLLM
- LiteLLM has retrieved user information from your IDP
- Your custom SSO handler is called and returns an object of type SSOUserDefinedValues
- User signed in to UI
    )OpenID)LitellmUserRolesSSOUserDefinedValues)proxy_serveruserIDPInforeturnc                    sp   z+| j d u rtd|  tjd urtjj| j dI d H }tg | j | jtjj	dddW S  t
y7   t
dw )Nz-No ID found for user. userIDPInfo.id is None )user_id
   Z1d)modelsr   Z
user_emailZ	user_roleZ
max_budgetZbudget_durationzFailed custom auth)id
ValueErrorr   Zprisma_clientget_datar   emailr   ZINTERNAL_USERvalue	Exception)r   Z
_user_info r   O/home/app/Keep/.python/lib/python3.10/site-packages/litellm/proxy/custom_sso.pycustom_sso_handler   s"   

r   N)	__doc__Zfastapi_sso.sso.baser   Zlitellm.proxy._typesr   r   Zlitellm.proxyr   r   r   r   r   r   <module>   s
    