"use client"; import React, { Suspense, useEffect, useState } from "react"; import { useSearchParams } from "next/navigation"; import { jwtDecode } from "jwt-decode"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import Navbar from "@/components/navbar"; import UserDashboard from "@/components/user_dashboard"; import ModelDashboard from "@/components/model_dashboard"; import ViewUserDashboard from "@/components/view_users"; import Teams from "@/components/teams"; import Organizations from "@/components/organizations"; import AdminPanel from "@/components/admins"; import Settings from "@/components/settings"; import GeneralSettings from "@/components/general_settings"; import PassThroughSettings from "@/components/pass_through_settings"; import BudgetPanel from "@/components/budgets/budget_panel"; import SpendLogsTable from "@/components/view_logs"; import ModelHub from "@/components/model_hub"; import APIRef from "@/components/api_ref"; import ChatUI from "@/components/chat_ui"; import Sidebar from "@/components/leftnav"; import Usage from "@/components/usage"; import CacheDashboard from "@/components/cache_dashboard"; import { setGlobalLitellmHeaderName } from "@/components/networking"; function getCookie(name: string) { const cookieValue = document.cookie .split("; ") .find((row) => row.startsWith(name + "=")); return cookieValue ? cookieValue.split("=")[1] : null; } function formatUserRole(userRole: string) { if (!userRole) { return "Undefined Role"; } console.log(`Received user role: ${userRole.toLowerCase()}`); console.log(`Received user role length: ${userRole.toLowerCase().length}`); switch (userRole.toLowerCase()) { case "app_owner": return "App Owner"; case "demo_app_owner": return "App Owner"; case "app_admin": return "Admin"; case "proxy_admin": return "Admin"; case "proxy_admin_viewer": return "Admin Viewer"; case "internal_user": return "Internal User"; case "internal_viewer": return "Internal Viewer"; case "app_user": return "App User"; default: return "Unknown Role"; } } interface ProxySettings { PROXY_BASE_URL: string; PROXY_LOGOUT_URL: string; } const queryClient = new QueryClient(); export default function CreateKeyPage() { const [userRole, setUserRole] = useState(""); const [premiumUser, setPremiumUser] = useState(false); const [disabledPersonalKeyCreation, setDisabledPersonalKeyCreation] = useState(false); const [userEmail, setUserEmail] = useState(null); const [teams, setTeams] = useState(null); const [keys, setKeys] = useState(null); const [proxySettings, setProxySettings] = useState({ PROXY_BASE_URL: "", PROXY_LOGOUT_URL: "", }); const [showSSOBanner, setShowSSOBanner] = useState(true); const searchParams = useSearchParams()!; const [modelData, setModelData] = useState({ data: [] }); const [token, setToken] = useState(null); const userID = searchParams.get("userID"); const invitation_id = searchParams.get("invitation_id"); // Get page from URL, default to 'api-keys' if not present const [page, setPage] = useState(() => { return searchParams.get("page") || "api-keys"; }); // Custom setPage function that updates URL const updatePage = (newPage: string) => { // Update URL without full page reload const newSearchParams = new URLSearchParams(searchParams); newSearchParams.set("page", newPage); // Use Next.js router to update URL window.history.pushState(null, "", `?${newSearchParams.toString()}`); setPage(newPage); }; const [accessToken, setAccessToken] = useState(null); useEffect(() => { const token = getCookie("token"); setToken(token); }, []); useEffect(() => { if (!token) { return; } const decoded = jwtDecode(token) as { [key: string]: any }; if (decoded) { // cast decoded to dictionary console.log("Decoded token:", decoded); console.log("Decoded key:", decoded.key); // set accessToken setAccessToken(decoded.key); setDisabledPersonalKeyCreation( decoded.disabled_non_admin_personal_key_creation, ); // check if userRole is defined if (decoded.user_role) { const formattedUserRole = formatUserRole(decoded.user_role); console.log("Decoded user_role:", formattedUserRole); setUserRole(formattedUserRole); if (formattedUserRole == "Admin Viewer") { setPage("usage"); } } else { console.log("User role not defined"); } if (decoded.user_email) { setUserEmail(decoded.user_email); } else { console.log(`User Email is not set ${decoded}`); } if (decoded.login_method) { setShowSSOBanner( decoded.login_method == "username_password" ? true : false, ); } else { console.log(`User Email is not set ${decoded}`); } if (decoded.premium_user) { setPremiumUser(decoded.premium_user); } if (decoded.auth_header_name) { setGlobalLitellmHeaderName(decoded.auth_header_name); } } }, [token]); return ( Loading...}> {invitation_id ? ( ) : (
{page == "api-keys" ? ( ) : page == "models" ? ( ) : page == "llm-playground" ? ( ) : page == "users" ? ( ) : page == "teams" ? ( ) : page == "organizations" ? ( ) : page == "admin-panel" ? ( ) : page == "api_ref" ? ( ) : page == "settings" ? ( ) : page == "budgets" ? ( ) : page == "general-settings" ? ( ) : page == "model-hub" ? ( ) : page == "caching" ? ( ) : page == "pass-through-settings" ? ( ) : page == "logs" ? ( ) : ( )}
)}
); }