import { useState, type FormEvent } from 'react'; import { z } from 'zod/v4'; export default function Login({ setToken } : {setToken: (token: string) => void}) { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); async function doLogin(event: FormEvent) { event.preventDefault(); const token = await loginUser({username, password}); setToken(token); } return (
void doLogin(e)} method="action">
); } const LoginResponse = z.object({ token: z.string() }); async function loginUser(credentials : {username: string, password: string}): Promise { // Get a session token for OpenAI Realtime API const response = await fetch('login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(credentials) }); if (!response.ok) { throw new Error(response.statusText); } const responseJson:unknown = await response.json(); const parsedToken = LoginResponse.parse(responseJson); return parsedToken.token; }