Add monitoring TG service
This commit is contained in:
49
src/parser_bot/web/static/js/admin.js
Normal file
49
src/parser_bot/web/static/js/admin.js
Normal 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"));
|
||||
Reference in New Issue
Block a user