feat: restore cron page, email in navbar, metrics pipeline v1.3.19

This commit is contained in:
Naeel
2026-05-02 13:58:45 +04:00
committed by “Naeel”
parent 1610011f7f
commit 2bc04d5bfd
11 changed files with 833 additions and 20 deletions
+32 -3
View File
@@ -406,7 +406,7 @@
</div>
<div class="navbar">
<div class="brand-mark">N</div>
<div class="brand-mark" id="user-avatar">N</div>
<div class="brand-text">
<div class="nubes">NUBES</div>
<div class="product">FISSION CONSOLE</div>
@@ -416,7 +416,6 @@
<button class="btn ghost" onclick="reloadAll()">Refresh</button>
<button class="btn" onclick="openCreate()">+ Создать функцию</button>
<button class="btn ghost" onclick="openHelp()">Help</button>
<a class="btn ghost" href="/cron/" target="_blank" rel="noopener">Cron</a>
<button class="btn ghost" onclick="doLogout()" style="margin-left:8px;">Выход</button>
</div>
<div class="wrap">
@@ -1244,6 +1243,7 @@
}
localStorage.setItem('auth_token', token);
localStorage.setItem('auth_env', env);
setUserAvatar(token);
hideLoginOverlay();
// Проверяем статус NS — если не ready, показываем init overlay
try {
@@ -1263,10 +1263,37 @@
}
}
function jwtEmail(token) {
try {
var payload = JSON.parse(atob(token.split('.')[1].replace(/-/g,'+').replace(/_/g,'/')));
return payload.email || payload.sub || null;
} catch (_) { return null; }
}
function setUserAvatar(token) {
var el = document.getElementById('user-avatar');
if (!el) return;
var email = token ? jwtEmail(token) : null;
if (email) {
el.textContent = email;
el.title = email;
el.style.fontSize = '0.7rem';
el.style.minWidth = '60px';
el.style.padding = '0 8px';
} else {
el.textContent = 'N';
el.title = '';
el.style.fontSize = '';
el.style.minWidth = '';
el.style.padding = '';
}
}
function doLogout() {
localStorage.removeItem('auth_token');
localStorage.removeItem('auth_env');
try { document.getElementById('l-token').value = ''; } catch (_) { }
setUserAvatar(null);
showLoginOverlay();
}
@@ -1478,10 +1505,12 @@
}
function checkAuth() {
if (!localStorage.getItem('auth_token')) {
var storedToken = localStorage.getItem('auth_token');
if (!storedToken) {
showLoginOverlay();
return;
}
setUserAvatar(storedToken);
hideLoginOverlay();
reloadAll();
}