From b7921a830a68945bf681a6f87d1ce48813137232 Mon Sep 17 00:00:00 2001 From: Katalina Okano Date: Thu, 17 Dec 2020 15:01:40 -0500 Subject: [PATCH] fix(api): login-callback may have null user in rare cases --- src/backend-worker/handlers/login-callback.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/backend-worker/handlers/login-callback.ts b/src/backend-worker/handlers/login-callback.ts index 0861c18..f37c5b6 100644 --- a/src/backend-worker/handlers/login-callback.ts +++ b/src/backend-worker/handlers/login-callback.ts @@ -69,7 +69,6 @@ export const LoginCallback = resolveFailures( const tokens = (await tokenFetch.json()) as AuthTokenResponse; if (!tokens.access_token) { - console.info({ tokens }); return AuthErrorResponse('token response invalid'); } @@ -79,6 +78,10 @@ export const LoginCallback = resolveFailures( getGuilds(tokens.access_token), ]); + if (!user) { + return AuthErrorResponse('failed to fetch user'); + } + const sessionData: SessionData = { tokens, sessionID: sessionID.string, @@ -94,12 +97,14 @@ export const LoginCallback = resolveFailures( } ); -const getUser = async (accessToken: string): Promise => { - const { id, username, discriminator, bot, avatar } = await discordFetch( - '/users/@me', - accessToken, - 'Bearer' - ); +const getUser = async (accessToken: string): Promise => { + const user = await discordFetch('/users/@me', accessToken, 'Bearer'); + + if (!user) { + return null; + } + + const { id, username, discriminator, bot, avatar } = user; return { id, username, discriminator, bot, avatar }; };