diff --git a/ui/litellm-dashboard/src/components/team/TeamMemberTab.tsx b/ui/litellm-dashboard/src/components/team/TeamMemberTab.tsx index 652d1dbcd91..e880aa49f65 100644 --- a/ui/litellm-dashboard/src/components/team/TeamMemberTab.tsx +++ b/ui/litellm-dashboard/src/components/team/TeamMemberTab.tsx @@ -82,7 +82,45 @@ export default function TeamMemberTab({ const isUserTeamAdmin = isUserTeamAdminForSingleTeam(teamData.team_info.members_with_roles, userId || ""); const isProxyAdmin = isProxyAdminRole(userRole || ""); + const getUserAllowedModels = (userId: string | null): string[] | null => { + if (!userId) return null; + const membership = teamData.team_memberships.find((tm) => tm.user_id === userId); + const models = membership?.litellm_budget_table?.allowed_models; + return models && models.length > 0 ? models : null; + }; + const extraColumns: ColumnsType = [ + { + title: ( + + Model Scope + + + + + ), + key: "model_scope", + render: (_: unknown, record: Member) => { + const models = getUserAllowedModels(record.user_id); + if (!models) { + return (all team models); + } + const displayed = models.slice(0, 2); + const remaining = models.length - displayed.length; + return ( + + {displayed.map((m) => ( + {m} + ))} + {remaining > 0 && ( + + +{remaining} more + + )} + + ); + }, + }, { title: ( @@ -138,6 +176,7 @@ export default function TeamMemberTab({ max_budget_in_team: membership?.litellm_budget_table?.max_budget || null, tpm_limit: membership?.litellm_budget_table?.tpm_limit || null, rpm_limit: membership?.litellm_budget_table?.rpm_limit || null, + allowed_models: membership?.litellm_budget_table?.allowed_models || [], }; setSelectedEditMember(enhancedMember); setIsEditMemberModalVisible(true);