From 95bbd60a38f4f34b7f5ae40146bee7488c5383c4 Mon Sep 17 00:00:00 2001 From: Allen Zhou <46854522+allenzhou101@users.noreply.github.com> Date: Wed, 5 Feb 2025 12:42:09 -0800 Subject: [PATCH] Add zod parsing for OAuthMetadataSchema and OAuthTokensSchema --- client/src/lib/auth.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/client/src/lib/auth.ts b/client/src/lib/auth.ts index 040d35a..d7ddc8c 100644 --- a/client/src/lib/auth.ts +++ b/client/src/lib/auth.ts @@ -26,10 +26,11 @@ export async function discoverOAuthMetadata( if (response.ok) { const metadata = await response.json(); - return { + const validatedMetadata = OAuthMetadataSchema.parse({ authorization_endpoint: metadata.authorization_endpoint, token_endpoint: metadata.token_endpoint, - }; + }); + return validatedMetadata; } } catch (error) { console.warn("OAuth metadata discovery failed:", error); @@ -37,10 +38,11 @@ export async function discoverOAuthMetadata( // Fall back to default endpoints const baseUrl = new URL(serverUrl); - return { + const defaultMetadata = { authorization_endpoint: new URL("/authorize", baseUrl).toString(), token_endpoint: new URL("/token", baseUrl).toString(), }; + return OAuthMetadataSchema.parse(defaultMetadata); } export async function startOAuthFlow(serverUrl: string): Promise { @@ -98,7 +100,8 @@ export async function handleOAuthCallback( throw new Error("Token exchange failed"); } - return await response.json(); + const tokens = await response.json(); + return OAuthTokensSchema.parse(tokens); } export async function refreshAccessToken( @@ -126,5 +129,6 @@ export async function refreshAccessToken( throw new Error("Token refresh failed"); } - return await response.json(); + const tokens = await response.json(); + return OAuthTokensSchema.parse(tokens); }