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

This commit is contained in:
Naeel
2026-05-01 19:53:40 +03:00
parent df8bf0d476
commit d21e1ac9a5
13 changed files with 848 additions and 110 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>
@@ -1246,6 +1245,7 @@
}
localStorage.setItem('auth_token', token);
localStorage.setItem('auth_env', env);
setUserAvatar(token);
hideLoginOverlay();
// Проверяем статус NS — если не ready, показываем init overlay
try {
@@ -1265,10 +1265,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();
}
@@ -1480,10 +1507,12 @@
}
function checkAuth() {
if (!localStorage.getItem('auth_token')) {
var storedToken = localStorage.getItem('auth_token');
if (!storedToken) {
showLoginOverlay();
return;
}
setUserAvatar(storedToken);
hideLoginOverlay();
reloadAll();
}