fix scim firstname and givenName storage

This commit is contained in:
Ishaan Jaff 2025-04-16 14:46:30 -07:00
parent 57e61bc4ed
commit f475564457
2 changed files with 32 additions and 0 deletions

View file

@ -89,6 +89,14 @@ class ScimTransformations:
""" """
SCIM requires a family name with length > 0 SCIM requires a family name with length > 0
""" """
metadata = user.metadata or {}
if "scim_metadata" in metadata:
scim_metadata: LiteLLM_UserScimMetadata = LiteLLM_UserScimMetadata(
**metadata["scim_metadata"]
)
if scim_metadata.familyName and len(scim_metadata.familyName) > 0:
return scim_metadata.familyName
if user.user_alias and len(user.user_alias) > 0: if user.user_alias and len(user.user_alias) > 0:
return user.user_alias return user.user_alias
return ScimTransformations.DEFAULT_SCIM_FAMILY_NAME return ScimTransformations.DEFAULT_SCIM_FAMILY_NAME
@ -98,6 +106,14 @@ class ScimTransformations:
""" """
SCIM requires a given name with length > 0 SCIM requires a given name with length > 0
""" """
metadata = user.metadata or {}
if "scim_metadata" in metadata:
scim_metadata: LiteLLM_UserScimMetadata = LiteLLM_UserScimMetadata(
**metadata["scim_metadata"]
)
if scim_metadata.givenName and len(scim_metadata.givenName) > 0:
return scim_metadata.givenName
if user.user_alias and len(user.user_alias) > 0: if user.user_alias and len(user.user_alias) > 0:
return user.user_alias return user.user_alias
return ScimTransformations.DEFAULT_SCIM_NAME return ScimTransformations.DEFAULT_SCIM_NAME
@ -252,6 +268,12 @@ async def create_user(
user_email=user_email, user_email=user_email,
user_alias=user.name.givenName, user_alias=user.name.givenName,
teams=[group.value for group in user.groups] if user.groups else None, teams=[group.value for group in user.groups] if user.groups else None,
metadata={
"scim_metadata": LiteLLM_UserScimMetadata(
givenName=user.name.givenName,
familyName=user.name.familyName,
).model_dump()
},
) )
) )
scim_user = await ScimTransformations.transform_litellm_user_to_scim_user( scim_user = await ScimTransformations.transform_litellm_user_to_scim_user(

View file

@ -1,8 +1,18 @@
from typing import Any, Dict, List, Optional, Union from typing import Any, Dict, List, Optional, Union
from fastapi import HTTPException
from pydantic import BaseModel, EmailStr from pydantic import BaseModel, EmailStr
class LiteLLM_UserScimMetadata(BaseModel):
"""
Scim metadata stored in LiteLLM_UserTable.metadata
"""
givenName: Optional[str] = None
familyName: Optional[str] = None
# SCIM Resource Models # SCIM Resource Models
class SCIMResource(BaseModel): class SCIMResource(BaseModel):
schemas: List[str] schemas: List[str]