
    g                     @    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Zy)	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)	user_infouserIDPInforeturnc                 t  K   	 t        d       t        d|         | j                  t        d|        t        | j                         d {   }t        d|       t	        g | j                  | j
                  t        j                  j                  dd      S 7 M# t        $ r t        d	      w xY ww)
Nzinside custom sso handlerzuserIDPInfo: z-No ID found for user. userIDPInfo.id is None )user_idz_user_info from litellm DB 
   1d)modelsr
   
user_email	user_role
max_budgetbudget_durationzFailed custom auth)
printid
ValueErrorr   r   emailr   INTERNAL_USERvalue	Exception)r   
_user_infos     M/var/www/openai/venv/lib/python3.12/site-packages/litellm/proxy/custom_sso.pycustom_sso_handlerr      s     .)*k]+,>>!?}M 
 %[^^<<
+Z8#NN"((&44:: 
 	
 =  .,--.s0   B8AB  BAB  B8B   B55B8N)	__doc__fastapi_sso.sso.baser   litellm.proxy._typesr   r   :litellm.proxy.management_endpoints.internal_user_endpointsr   r        r   <module>r"      s)    ( G P.& .5I .r!   