admin page workflow

This commit is contained in:
SPRINX0\prochazka
2024-10-23 09:41:39 +02:00
parent a46e592cfb
commit a03ca73d93
9 changed files with 24 additions and 13 deletions

View File

@@ -6,10 +6,11 @@ for (const page of [
'', '',
'not-logged', 'not-logged',
'error', 'error',
'admin-login',
'login', 'login',
'admin-login',
'admin', 'admin',
'license', 'license',
'admin-license',
'set-admin-password', 'set-admin-password',
'redirect', 'redirect',
]) { ]) {

View File

@@ -13,6 +13,7 @@
import SpecialPageLayout from './widgets/SpecialPageLayout.svelte'; import SpecialPageLayout from './widgets/SpecialPageLayout.svelte';
import hasPermission from './utility/hasPermission'; import hasPermission from './utility/hasPermission';
import ErrorInfo from './elements/ErrorInfo.svelte'; import ErrorInfo from './elements/ErrorInfo.svelte';
import { isOneOfPage } from './utility/pageDefs';
const config = useConfig(); const config = useConfig();
const values = writable({ amoid: null, databaseServer: null }); const values = writable({ amoid: null, databaseServer: null });
@@ -45,7 +46,7 @@
const { licenseKey } = e.detail; const { licenseKey } = e.detail;
const resp = await apiCall('config/save-license-key', { licenseKey }); const resp = await apiCall('config/save-license-key', { licenseKey });
if (resp?.status == 'ok') { if (resp?.status == 'ok') {
internalRedirectTo('/index.html'); internalRedirectTo(isOneOfPage('admin-license') ? '/admin.html' : '/index.html');
} else { } else {
errorMessage = resp?.errorMessage || 'Error saving license key'; errorMessage = resp?.errorMessage || 'Error saving license key';
} }
@@ -62,7 +63,7 @@
const license = await apiCall('config/start-trial'); const license = await apiCall('config/start-trial');
if (license?.status == 'ok') { if (license?.status == 'ok') {
sessionStorage.setItem('continueTrialConfirmed', '1'); sessionStorage.setItem('continueTrialConfirmed', '1');
internalRedirectTo('/index.html'); internalRedirectTo(isOneOfPage('admin-license') ? '/admin.html' : '/index.html');
} else { } else {
errorMessage = license?.errorMessage || 'Error starting trial'; errorMessage = license?.errorMessage || 'Error starting trial';
} }
@@ -77,7 +78,7 @@
value={`Continue trial (${trialDaysLeft} days left)`} value={`Continue trial (${trialDaysLeft} days left)`}
on:click={async e => { on:click={async e => {
sessionStorage.setItem('continueTrialConfirmed', '1'); sessionStorage.setItem('continueTrialConfirmed', '1');
internalRedirectTo('/index.html'); internalRedirectTo(isOneOfPage('admin-license') ? '/admin.html' : '/index.html');
}} }}
/> />
</div> </div>

View File

@@ -129,7 +129,11 @@ export async function handleAuthOnStartup(config) {
function checkInvalidLicense() { function checkInvalidLicense() {
if (!config.isLicenseValid) { if (!config.isLicenseValid) {
if (config.storageDatabase || getElectron()) { if (config.storageDatabase || getElectron()) {
if (isAdminPage()) {
internalRedirectTo(`/admin-license.html`);
} else {
internalRedirectTo(`/license.html`); internalRedirectTo(`/license.html`);
}
} else { } else {
internalRedirectTo(`/error.html`); internalRedirectTo(`/error.html`);
} }
@@ -185,7 +189,7 @@ export async function handleAuthOnStartup(config) {
if (page == 'login' || page == 'admin-login' || page == 'not-logged') return; if (page == 'login' || page == 'admin-login' || page == 'not-logged') return;
if (checkLoggedUser()) return; if (checkLoggedUser()) return;
if (page == 'license') return; if (page == 'license' || page == 'admin-license') return;
if (checkTrialDaysLeft()) return; if (checkTrialDaysLeft()) return;
if (checkInvalidLicense()) return; if (checkInvalidLicense()) return;

View File

@@ -34,6 +34,7 @@ function createApp() {
props: {}, props: {},
}); });
case 'license': case 'license':
case 'admin-license':
return new EnterLicensePage({ return new EnterLicensePage({
target: document.body, target: document.body,
props: {}, props: {},

View File

@@ -12,7 +12,7 @@ import uuidv1 from 'uuid/v1';
import { openWebLink } from './exportFileTools'; import { openWebLink } from './exportFileTools';
import { callServerPing } from './connectionsPinger'; import { callServerPing } from './connectionsPinger';
import { batchDispatchCacheTriggers, dispatchCacheChange } from './cache'; import { batchDispatchCacheTriggers, dispatchCacheChange } from './cache';
import { isAdminPage } from './pageDefs'; import { isAdminPage, isOneOfPage } from './pageDefs';
export const strmid = uuidv1(); export const strmid = uuidv1();
@@ -282,7 +282,7 @@ export function getAuthCategory(config) {
if (config.isBasicAuth) { if (config.isBasicAuth) {
return 'basic'; return 'basic';
} }
if (isAdminPage() && config.isAdminLoginForm) { if (isOneOfPage('admin', 'admin-license') && config.isAdminLoginForm) {
return 'admin'; return 'admin';
} }
if (getElectron()) { if (getElectron()) {

View File

@@ -20,5 +20,5 @@ export function subscribePermissionCompiler() {
} }
export function setConfigForPermissions(config) { export function setConfigForPermissions(config) {
compiled = compilePermissions(config?.permissions || {}); compiled = compilePermissions(config?.permissions || []);
} }

View File

@@ -2,6 +2,10 @@ export function isAdminPage() {
return window['dbgate_page'] == 'admin'; return window['dbgate_page'] == 'admin';
} }
export function isOneOfPage(...pages) {
return pages.includes(window['dbgate_page']);
}
export function getOpenedTabsStorageName() { export function getOpenedTabsStorageName() {
return isAdminPage() ? 'adminOpenedTabs' : 'openedTabs'; return isAdminPage() ? 'adminOpenedTabs' : 'openedTabs';
} }

View File

@@ -1,5 +1,5 @@
import getElectron from './getElectron'; import getElectron from './getElectron';
import { isAdminPage } from './pageDefs'; import { isAdminPage, isOneOfPage } from './pageDefs';
let apiUrl = null; let apiUrl = null;
try { try {
@@ -17,7 +17,7 @@ export function resolveApiHeaders() {
const electron = getElectron(); const electron = getElectron();
const res = {}; const res = {};
const accessToken = localStorage.getItem(isAdminPage() ? 'adminAccessToken' : 'accessToken'); const accessToken = localStorage.getItem(isOneOfPage('admin', 'admin-license') ? 'adminAccessToken' : 'accessToken');
if (accessToken) { if (accessToken) {
res['Authorization'] = `Bearer ${accessToken}`; res['Authorization'] = `Bearer ${accessToken}`;
} }

View File

@@ -9,8 +9,8 @@
const config = await getConfig(); const config = await getConfig();
setConfigForPermissions(config); setConfigForPermissions(config);
await handleAuthOnStartup(config); await handleAuthOnStartup(config);
} catch (e) { } catch (err) {
console.log('Error calling API, trying again in 1s'); console.log('Error calling API, trying again in 1s:', err.message);
setTimeout(loadApi, 1000); setTimeout(loadApi, 1000);
} }
} }