mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-25 18:54:30 +00:00
fix scim firstname and givenName storage
This commit is contained in:
parent
57e61bc4ed
commit
f475564457
2 changed files with 32 additions and 0 deletions
|
@ -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(
|
||||||
|
|
|
@ -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]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue