diff --git a/ui/litellm-dashboard/src/components/create_key_button.tsx b/ui/litellm-dashboard/src/components/create_key_button.tsx index 0ec06348e81..205d4226dc2 100644 --- a/ui/litellm-dashboard/src/components/create_key_button.tsx +++ b/ui/litellm-dashboard/src/components/create_key_button.tsx @@ -39,6 +39,9 @@ import { InfoCircleOutlined } from '@ant-design/icons'; import { Tooltip } from 'antd'; import Createuser from "./create_user_button"; import debounce from 'lodash/debounce'; +import { rolesWithWriteAccess } from '../utils/roles'; + + const { Option } = Select; @@ -335,9 +338,11 @@ const CreateKey: React.FC = ({ return (
- + {userRole && rolesWithWriteAccess.includes(userRole) && ( + + )} {keyData.key_alias || "API Key"} {keyData.token}
-
- - -
+ {userRole && rolesWithWriteAccess.includes(userRole) && ( +
+ + +
+ )} {/* Add RegenerateKeyModal */} @@ -246,7 +249,7 @@ export default function KeyInfoView({ keyId, onClose, keyData, accessToken, user
Key Settings - {!isEditing && ( + {!isEditing && userRole && rolesWithWriteAccess.includes(userRole) && ( diff --git a/ui/litellm-dashboard/src/components/leftnav.tsx b/ui/litellm-dashboard/src/components/leftnav.tsx index 0bf5da57c6f..5990a50f9e5 100644 --- a/ui/litellm-dashboard/src/components/leftnav.tsx +++ b/ui/litellm-dashboard/src/components/leftnav.tsx @@ -21,7 +21,7 @@ import { ExperimentOutlined, ThunderboltOutlined, } from '@ant-design/icons'; -import { old_admin_roles, v2_admin_role_names, all_admin_roles, rolesAllowedToSeeUsage } from '../utils/roles'; +import { old_admin_roles, v2_admin_role_names, all_admin_roles, rolesAllowedToSeeUsage, rolesWithWriteAccess } from '../utils/roles'; const { Sider } = Layout; @@ -45,7 +45,7 @@ interface MenuItem { // Note: If a menu item does not have a role, it is visible to all roles. const menuItems: MenuItem[] = [ { key: "1", page: "api-keys", label: "Virtual Keys", icon: }, - { key: "3", page: "llm-playground", label: "Test Key", icon: }, + { key: "3", page: "llm-playground", label: "Test Key", icon: , roles: rolesWithWriteAccess }, { key: "2", page: "models", label: "Models", icon: , roles: all_admin_roles }, { key: "4", page: "usage", label: "Usage", icon: }, { key: "6", page: "teams", label: "Teams", icon: }, diff --git a/ui/litellm-dashboard/src/components/team/team_info.tsx b/ui/litellm-dashboard/src/components/team/team_info.tsx index 7de7396980b..d268f137f64 100644 --- a/ui/litellm-dashboard/src/components/team/team_info.tsx +++ b/ui/litellm-dashboard/src/components/team/team_info.tsx @@ -222,9 +222,13 @@ const TeamInfoView: React.FC = ({ - Overview - Members - Settings + {[ + Overview, + ...(canEditTeam ? [ + Members, + Settings + ] : []) + ]} diff --git a/ui/litellm-dashboard/src/utils/roles.ts b/ui/litellm-dashboard/src/utils/roles.ts index 8ac2d7632ba..a50f06697b6 100644 --- a/ui/litellm-dashboard/src/utils/roles.ts +++ b/ui/litellm-dashboard/src/utils/roles.ts @@ -4,4 +4,5 @@ export const v2_admin_role_names = ["proxy_admin", "proxy_admin_viewer", "org_ad export const all_admin_roles = [...old_admin_roles, ...v2_admin_role_names]; export const internalUserRoles = ["Internal User", "Internal Viewer"]; -export const rolesAllowedToSeeUsage = ["Admin", "Admin Viewer", "Internal User", "Internal Viewer"]; \ No newline at end of file +export const rolesAllowedToSeeUsage = ["Admin", "Admin Viewer", "Internal User", "Internal Viewer"]; +export const rolesWithWriteAccess = ["Internal User", "Admin"]; \ No newline at end of file