Fix validation fo google tokens

This commit is contained in:
Roman Krček
2025-06-23 14:28:44 +02:00
parent 1760448f73
commit 0a60ea7ffb
2 changed files with 33 additions and 2 deletions

View File

@@ -60,5 +60,24 @@ export const POST: RequestHandler = async ({ request }) => {
} }
} }
/* validate token */
if (action === 'validate') {
if (!refreshToken) {
console.log('No refreshToken provided');
return json({ valid: false });
}
try {
console.log('Validating refreshToken:', refreshToken);
const oAuth2Client = getOAuthClient();
oAuth2Client.setCredentials({ refresh_token: refreshToken });
await oAuth2Client.getAccessToken(); // This will throw if invalid
console.log('Token is valid');
return json({ valid: true });
} catch (err) {
console.error('Token validation error:', err);
return json({ valid: false, error: (err as Error).message });
}
}
return new Response('Bad request', { status: 400 }); return new Response('Bad request', { status: 400 });
}; };

View File

@@ -9,9 +9,21 @@
let subject = ''; let subject = '';
let body = ''; let body = '';
onMount(() => { async function validateToken(token: string): Promise<boolean> {
if (!token) return false;
const res = await fetch('/private/api/gmail', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ action: 'validate', refreshToken: token })
});
if (!res.ok) return false;
const data = await res.json();
return !!data.valid;
}
onMount(async () => {
refreshToken = localStorage.getItem('gmail_refresh_token') ?? ''; refreshToken = localStorage.getItem('gmail_refresh_token') ?? '';
authorized = !!refreshToken; authorized = await validateToken(refreshToken);
}); });
/* ⇢ redirects straight to Google via server 302 */ /* ⇢ redirects straight to Google via server 302 */