"use client"; import React, { Suspense, useEffect, useState } from "react"; import { useSearchParams } from "next/navigation"; import { Card, Title, Text, TextInput, Callout, Button, Grid, Col, } from "@tremor/react"; import { RiAlarmWarningLine, RiCheckboxCircleLine } from "@remixicon/react"; import { invitationClaimCall, userUpdateUserCall, getOnboardingCredentials, claimOnboardingToken, } from "@/components/networking"; import { jwtDecode } from "jwt-decode"; import { Form, Button as Button2, message } from "antd"; function getCookie(name: string) { console.log("COOKIES", document.cookie) const cookieValue = document.cookie .split('; ') .find(row => row.startsWith(name + '=')); return cookieValue ? cookieValue.split('=')[1] : null; } export default function Onboarding() { const [form] = Form.useForm(); const searchParams = useSearchParams()!; const token = getCookie('token'); const inviteID = searchParams.get("invitation_id"); const [accessToken, setAccessToken] = useState(null); const [defaultUserEmail, setDefaultUserEmail] = useState(""); const [userEmail, setUserEmail] = useState(""); const [userID, setUserID] = useState(null); const [loginUrl, setLoginUrl] = useState(""); const [jwtToken, setJwtToken] = useState(""); useEffect(() => { if (!inviteID) { return; } getOnboardingCredentials(inviteID).then((data) => { const login_url = data.login_url; console.log("login_url:", login_url); setLoginUrl(login_url); const token = data.token; const decoded = jwtDecode(token) as { [key: string]: any }; setJwtToken(token); console.log("decoded:", decoded); setAccessToken(decoded.key); console.log("decoded user email:", decoded.user_email); const user_email = decoded.user_email; setUserEmail(user_email); const user_id = decoded.user_id; setUserID(user_id); }); }, [inviteID]); const handleSubmit = (formValues: Record) => { console.log( "in handle submit. accessToken:", accessToken, "token:", jwtToken, "formValues:", formValues ); if (!accessToken || !jwtToken) { return; } formValues.user_email = userEmail; if (!userID || !inviteID) { return; } claimOnboardingToken( accessToken, inviteID, userID, formValues.password ).then((data) => { let litellm_dashboard_ui = "/ui/"; const user_id = data.data?.user_id || data.user_id; litellm_dashboard_ui += "?userID=" + user_id; // set cookie "token" to jwtToken document.cookie = "token=" + jwtToken; console.log("redirecting to:", litellm_dashboard_ui); window.location.href = litellm_dashboard_ui; }); // redirect to login page }; return (
🚅 LiteLLM Sign up Claim your user account to login to Admin UI. SSO is under the Enterprise Tirer.
<>
Sign Up
); }