Add monitoring TG service

This commit is contained in:
Grendgi
2026-06-04 14:55:41 +03:00
commit f9e072774c
74 changed files with 7232 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
import { api, toast } from "/api/monitoring-tg/static/js/api.js";
import "/api/monitoring-tg/static/js/access.js";
const form = document.getElementById("admin-form");
const password = document.getElementById("admin-password");
const statusEl = document.getElementById("admin-status");
const logoutBtn = document.getElementById("admin-logout");
function returnUrl() {
const params = new URLSearchParams(location.search);
return params.get("return") || "/";
}
async function refresh() {
const status = await api.accessMe();
if (status.is_admin) {
statusEl.textContent = "Админ-доступ активен.";
form.hidden = true;
logoutBtn.hidden = false;
} else if (!status.admin_password_enabled) {
statusEl.textContent = "Админ пароль не задан. Доступ управляется IP-allowlist.";
form.hidden = true;
logoutBtn.hidden = true;
} else {
statusEl.textContent = "Введите админ пароль, чтобы открыть админские функции.";
form.hidden = false;
logoutBtn.hidden = true;
setTimeout(() => password.focus(), 30);
}
}
form.addEventListener("submit", async (e) => {
e.preventDefault();
try {
await api.adminLogin(password.value);
password.value = "";
toast("Админ-доступ открыт", "success");
location.href = returnUrl();
} catch (err) {
toast(err.message, "error");
}
});
logoutBtn.addEventListener("click", async () => {
await api.adminLogout();
location.reload();
});
refresh().catch(err => toast(err.message, "error"));