Add session-based login page and auth for dashboard

This commit is contained in:
2026-04-13 01:19:56 +00:00
parent 90cf0992b8
commit 73ea08003e
3 changed files with 239 additions and 6 deletions
+22
View File
@@ -50,6 +50,18 @@
border-radius: 50%;
background: var(--green);
}
.logout-btn {
background: none;
border: 1px solid var(--border);
color: var(--text-dim);
padding: 0.35rem 0.75rem;
border-radius: 6px;
font-size: 0.8rem;
cursor: pointer;
margin-left: 1rem;
transition: border-color 0.2s, color 0.2s;
}
.logout-btn:hover { border-color: var(--text-dim); color: var(--text); }
.container { max-width: 1200px; margin: 0 auto; padding: 1.5rem 2rem; }
/* Agent Cards */
@@ -210,6 +222,7 @@
<div class="status">
<div class="dot"></div>
<span id="agent-count">0 agents</span>
<button class="logout-btn" onclick="logout()">Logout</button>
</div>
</div>
@@ -346,12 +359,21 @@ document.getElementById('modal-overlay').addEventListener('click', e => {
if (e.target === e.currentTarget) closeModal();
});
async function logout() {
await fetch(API + '/api/logout', {method: 'POST'});
window.location.href = '/login';
}
async function refresh() {
try {
const [agentsRes, runsRes] = await Promise.all([
fetch(API + '/api/agents'),
fetch(API + '/api/runs?limit=25'),
]);
if (agentsRes.status === 401 || runsRes.status === 401) {
window.location.href = '/login';
return;
}
renderAgents(await agentsRes.json());
renderRuns(await runsRes.json());
} catch (err) {