feat: global Docker health indicator and graceful degradation
- GET /api/health endpoint returning Docker connectivity status - Sidebar shows Docker connection dot (green=connected, red=disconnected) - Stale scanner returns store-only results when Docker is unavailable - Polls health every 30s
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
import { t } from '$lib/i18n';
|
||||
import { resolvedTheme, applyTheme } from '$lib/stores/theme';
|
||||
import { IconLoader } from '$lib/components/icons';
|
||||
import { setAuthToken, isAuthenticated } from '$lib/auth';
|
||||
|
||||
let username = $state('');
|
||||
let password = $state('');
|
||||
@@ -25,7 +26,7 @@
|
||||
headers: { 'Authorization': `Bearer ${urlToken}` }
|
||||
});
|
||||
if (res.ok) {
|
||||
localStorage.setItem('auth_token', urlToken);
|
||||
setAuthToken(urlToken);
|
||||
// Remove token from URL to prevent leakage via history/referrer.
|
||||
history.replaceState(null, '', '/login');
|
||||
goto('/');
|
||||
@@ -37,8 +38,7 @@
|
||||
// Remove invalid token from URL.
|
||||
history.replaceState(null, '', '/login');
|
||||
}
|
||||
const existingToken = localStorage.getItem('auth_token');
|
||||
if (existingToken) {
|
||||
if (isAuthenticated()) {
|
||||
goto('/');
|
||||
}
|
||||
});
|
||||
@@ -57,7 +57,7 @@
|
||||
error = envelope.error ?? $t('login.loginFailed');
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('auth_token', envelope.data.token);
|
||||
setAuthToken(envelope.data.token);
|
||||
goto('/');
|
||||
} catch (err: unknown) {
|
||||
error = err instanceof Error ? err.message : $t('login.networkError');
|
||||
|
||||
Reference in New Issue
Block a user