diff --git a/packages/web/build-index.js b/packages/web/build-index.js index 67fe0d5b5..d68adb3e5 100644 --- a/packages/web/build-index.js +++ b/packages/web/build-index.js @@ -6,10 +6,11 @@ for (const page of [ '', 'not-logged', 'error', - 'admin-login', 'login', + 'admin-login', 'admin', 'license', + 'admin-license', 'set-admin-password', 'redirect', ]) { diff --git a/packages/web/src/EnterLicensePage.svelte b/packages/web/src/EnterLicensePage.svelte index 1424e6fe7..12702eaae 100644 --- a/packages/web/src/EnterLicensePage.svelte +++ b/packages/web/src/EnterLicensePage.svelte @@ -13,6 +13,7 @@ import SpecialPageLayout from './widgets/SpecialPageLayout.svelte'; import hasPermission from './utility/hasPermission'; import ErrorInfo from './elements/ErrorInfo.svelte'; + import { isOneOfPage } from './utility/pageDefs'; const config = useConfig(); const values = writable({ amoid: null, databaseServer: null }); @@ -45,7 +46,7 @@ const { licenseKey } = e.detail; const resp = await apiCall('config/save-license-key', { licenseKey }); if (resp?.status == 'ok') { - internalRedirectTo('/index.html'); + internalRedirectTo(isOneOfPage('admin-license') ? '/admin.html' : '/index.html'); } else { errorMessage = resp?.errorMessage || 'Error saving license key'; } @@ -62,7 +63,7 @@ const license = await apiCall('config/start-trial'); if (license?.status == 'ok') { sessionStorage.setItem('continueTrialConfirmed', '1'); - internalRedirectTo('/index.html'); + internalRedirectTo(isOneOfPage('admin-license') ? '/admin.html' : '/index.html'); } else { errorMessage = license?.errorMessage || 'Error starting trial'; } @@ -77,7 +78,7 @@ value={`Continue trial (${trialDaysLeft} days left)`} on:click={async e => { sessionStorage.setItem('continueTrialConfirmed', '1'); - internalRedirectTo('/index.html'); + internalRedirectTo(isOneOfPage('admin-license') ? '/admin.html' : '/index.html'); }} /> diff --git a/packages/web/src/clientAuth.ts b/packages/web/src/clientAuth.ts index 695733e86..7eadc12cb 100644 --- a/packages/web/src/clientAuth.ts +++ b/packages/web/src/clientAuth.ts @@ -129,7 +129,11 @@ export async function handleAuthOnStartup(config) { function checkInvalidLicense() { if (!config.isLicenseValid) { if (config.storageDatabase || getElectron()) { - internalRedirectTo(`/license.html`); + if (isAdminPage()) { + internalRedirectTo(`/admin-license.html`); + } else { + internalRedirectTo(`/license.html`); + } } else { internalRedirectTo(`/error.html`); } @@ -185,7 +189,7 @@ export async function handleAuthOnStartup(config) { if (page == 'login' || page == 'admin-login' || page == 'not-logged') return; if (checkLoggedUser()) return; - if (page == 'license') return; + if (page == 'license' || page == 'admin-license') return; if (checkTrialDaysLeft()) return; if (checkInvalidLicense()) return; diff --git a/packages/web/src/main.ts b/packages/web/src/main.ts index 9e16797b8..a4a074123 100644 --- a/packages/web/src/main.ts +++ b/packages/web/src/main.ts @@ -34,6 +34,7 @@ function createApp() { props: {}, }); case 'license': + case 'admin-license': return new EnterLicensePage({ target: document.body, props: {}, diff --git a/packages/web/src/utility/api.ts b/packages/web/src/utility/api.ts index f98b6c30b..04fd1c176 100644 --- a/packages/web/src/utility/api.ts +++ b/packages/web/src/utility/api.ts @@ -12,7 +12,7 @@ import uuidv1 from 'uuid/v1'; import { openWebLink } from './exportFileTools'; import { callServerPing } from './connectionsPinger'; import { batchDispatchCacheTriggers, dispatchCacheChange } from './cache'; -import { isAdminPage } from './pageDefs'; +import { isAdminPage, isOneOfPage } from './pageDefs'; export const strmid = uuidv1(); @@ -282,7 +282,7 @@ export function getAuthCategory(config) { if (config.isBasicAuth) { return 'basic'; } - if (isAdminPage() && config.isAdminLoginForm) { + if (isOneOfPage('admin', 'admin-license') && config.isAdminLoginForm) { return 'admin'; } if (getElectron()) { diff --git a/packages/web/src/utility/hasPermission.ts b/packages/web/src/utility/hasPermission.ts index 5db1258a8..0fbff7018 100644 --- a/packages/web/src/utility/hasPermission.ts +++ b/packages/web/src/utility/hasPermission.ts @@ -20,5 +20,5 @@ export function subscribePermissionCompiler() { } export function setConfigForPermissions(config) { - compiled = compilePermissions(config?.permissions || {}); + compiled = compilePermissions(config?.permissions || []); } diff --git a/packages/web/src/utility/pageDefs.ts b/packages/web/src/utility/pageDefs.ts index 88fdc2185..a4c85cf9b 100644 --- a/packages/web/src/utility/pageDefs.ts +++ b/packages/web/src/utility/pageDefs.ts @@ -2,6 +2,10 @@ export function isAdminPage() { return window['dbgate_page'] == 'admin'; } +export function isOneOfPage(...pages) { + return pages.includes(window['dbgate_page']); +} + export function getOpenedTabsStorageName() { return isAdminPage() ? 'adminOpenedTabs' : 'openedTabs'; } diff --git a/packages/web/src/utility/resolveApi.ts b/packages/web/src/utility/resolveApi.ts index 454b8a196..5b4fb554a 100644 --- a/packages/web/src/utility/resolveApi.ts +++ b/packages/web/src/utility/resolveApi.ts @@ -1,5 +1,5 @@ import getElectron from './getElectron'; -import { isAdminPage } from './pageDefs'; +import { isAdminPage, isOneOfPage } from './pageDefs'; let apiUrl = null; try { @@ -17,7 +17,7 @@ export function resolveApiHeaders() { const electron = getElectron(); const res = {}; - const accessToken = localStorage.getItem(isAdminPage() ? 'adminAccessToken' : 'accessToken'); + const accessToken = localStorage.getItem(isOneOfPage('admin', 'admin-license') ? 'adminAccessToken' : 'accessToken'); if (accessToken) { res['Authorization'] = `Bearer ${accessToken}`; } diff --git a/packages/web/src/widgets/SpecialPageLayout.svelte b/packages/web/src/widgets/SpecialPageLayout.svelte index b0174eb5b..c3fa045fa 100644 --- a/packages/web/src/widgets/SpecialPageLayout.svelte +++ b/packages/web/src/widgets/SpecialPageLayout.svelte @@ -9,8 +9,8 @@ const config = await getConfig(); setConfigForPermissions(config); await handleAuthOnStartup(config); - } catch (e) { - console.log('Error calling API, trying again in 1s'); + } catch (err) { + console.log('Error calling API, trying again in 1s:', err.message); setTimeout(loadApi, 1000); } }