diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index e37018a19..c8fd1ad07 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -24,12 +24,8 @@ let loadedApi = false; let loadedPlugins = false; - const isOauthCallback = handleOauthCallback(); async function loadApi() { - if (isOauthCallback) { - return; - } // if (shouldWaitForElectronInitialize()) { // setTimeout(loadApi, 100); // return; @@ -80,7 +76,7 @@ -{#if loadedApi && !isOauthCallback} +{#if loadedApi} diff --git a/packages/web/src/clientAuth.ts b/packages/web/src/clientAuth.ts index ae3d65906..71c1b9220 100644 --- a/packages/web/src/clientAuth.ts +++ b/packages/web/src/clientAuth.ts @@ -1,38 +1,38 @@ -import { apiCall } from './utility/api'; +import { apiCall, disableApi } from './utility/api'; import { getConfig } from './utility/metadataLoaders'; -export function handleOauthCallback() { +export function isOauthCallback() { const params = new URLSearchParams(location.search); const sentCode = params.get('code'); const sentState = params.get('state'); - if ( - sentCode && - sentState && - sentState.startsWith('dbg-oauth:') && - sentState == sessionStorage.getItem('oauthState') - ) { + return ( + sentCode && sentState && sentState.startsWith('dbg-oauth:') && sentState == sessionStorage.getItem('oauthState') + ); +} + +export function handleOauthCallback() { + const params = new URLSearchParams(location.search); + const sentCode = params.get('code'); + + if (isOauthCallback()) { sessionStorage.removeItem('oauthState'); apiCall('auth/oauth-token', { code: sentCode, redirectUri: location.origin, }).then(authResp => { const { accessToken } = authResp; - console.log('Got new access token:', accessToken); localStorage.setItem('accessToken', accessToken); location.replace('/'); }); - console.log('handleOauthCallback TRUE'); return true; } - console.log('handleOauthCallback FALSE'); return false; } export async function handleAuthOnStartup(config) { - console.log('********************* handleAuthOnStartup'); if (config.oauth) { if (localStorage.getItem('accessToken')) { return; diff --git a/packages/web/src/main.ts b/packages/web/src/main.ts index 81169a1ba..337d547c1 100644 --- a/packages/web/src/main.ts +++ b/packages/web/src/main.ts @@ -5,12 +5,16 @@ import './commands/stdCommands'; import localStorageGarbageCollector from './utility/localStorageGarbageCollector'; import { handleOauthCallback } from './clientAuth'; +const isOauthCallback = handleOauthCallback(); + localStorageGarbageCollector(); -const app = new App({ - target: document.body, - props: {}, -}); +const app = isOauthCallback + ? null + : new App({ + target: document.body, + props: {}, + }); // const app = null; diff --git a/packages/web/src/utility/api.ts b/packages/web/src/utility/api.ts index 32705f9fe..ee878f257 100644 --- a/packages/web/src/utility/api.ts +++ b/packages/web/src/utility/api.ts @@ -4,16 +4,17 @@ import { writable } from 'svelte/store'; import getElectron from './getElectron'; // import socket from './socket'; import { showSnackbarError } from '../utility/snackbar'; -import { redirectToLogin } from '../clientAuth'; +import { isOauthCallback, redirectToLogin } from '../clientAuth'; let eventSource; let apiLogging = false; // let cacheCleanerRegistered; let apiDisabled = false; +const disabledOnOauth = isOauthCallback(); -// export function disableApi() { -// apiDisabled = true; -// } +export function disableApi() { + apiDisabled = true; +} function wantEventSource() { if (!eventSource) { @@ -45,6 +46,10 @@ export async function apiCall(route: string, args: {} = undefined) { console.log('API disabled!!', route); return; } + if (disabledOnOauth && route != 'auth/oauth-token') { + console.log('API disabled because oauth callback!!', route); + return; + } const electron = getElectron(); if (electron) { @@ -62,7 +67,7 @@ export async function apiCall(route: string, args: {} = undefined) { }); if (resp.status == 401 && !apiDisabled) { - apiDisabled = true; + disableApi(); console.log('Disabling API', route); // unauthorized redirectToLogin();