admin login support

This commit is contained in:
Jan Prochazka
2024-07-27 11:26:03 +02:00
parent 38a80ec695
commit b5661afdcf
3 changed files with 24 additions and 5 deletions

View File

@@ -7,9 +7,13 @@
import FormSubmit from './forms/FormSubmit.svelte';
import FormTextField from './forms/FormTextField.svelte';
import { apiCall, enableApi } from './utility/api';
import { useConfig } from './utility/metadataLoaders';
import ErrorInfo from './elements/ErrorInfo.svelte';
export let isAdminPage;
const config = useConfig();
onMount(() => {
const removed = document.getElementById('starting_dbgate_zero');
if (removed) removed.remove();
@@ -30,6 +34,10 @@
{/if}
<FormPasswordField label="Password" name="password" autocomplete="current-password" saveOnInput />
{#if isAdminPage && $config && !$config.isAdminLoginForm}
<ErrorInfo message="Admin login is not configured. Please set ADMIN_PASSWORD environment variable" />
{/if}
<div class="submit">
<FormSubmit
value={isAdminPage ? 'Log In as Administrator' : 'Log In'}
@@ -40,13 +48,19 @@
...e.detail,
});
if (resp.error) {
internalRedirectTo(`/?page=not-logged&error=${encodeURIComponent(resp.error)}`);
internalRedirectTo(
`/?page=not-logged&error=${encodeURIComponent(resp.error)}&is-admin=${isAdminPage ? 'true' : ''}`
);
return;
}
const { accessToken } = resp;
if (accessToken) {
localStorage.setItem('accessToken', accessToken);
internalRedirectTo('/');
if (isAdminPage) {
internalRedirectTo('/?page=admin');
} else {
internalRedirectTo('/');
}
return;
}
internalRedirectTo(`/?page=not-logged`);

View File

@@ -1,7 +1,7 @@
<script lang="ts">
import { onMount } from 'svelte';
import FormStyledButton from './buttons/FormStyledButton.svelte';
import { doLogout, redirectToLogin } from './clientAuth';
import { doLogout, redirectToAdminLogin, redirectToLogin } from './clientAuth';
onMount(() => {
const removed = document.getElementById('starting_dbgate_zero');
@@ -10,9 +10,14 @@
const params = new URLSearchParams(location.search);
const error = params.get('error');
const isAdmin = params.get('is-admin') == 'true';
function handleLogin() {
redirectToLogin(undefined, true);
if (isAdmin) {
redirectToAdminLogin();
} else {
redirectToLogin(undefined, true);
}
}
</script>

View File

@@ -41,7 +41,7 @@ export function handleOauthCallback() {
export async function handleAuthOnStartup(config, isAdminPage = false) {
if (config.isAdminLoginForm && isAdminPage) {
if (localStorage.getItem('adminAccessToken')) {
if (localStorage.getItem('accessToken')) {
return;
}