Files
web_auth/auth/login.js

65 lines
2.1 KiB
JavaScript
Raw Normal View History

2026-01-19 05:35:37 +03:00
const form = document.getElementById("login-form");
const messageEl = document.getElementById("form-message");
function getSiteKey() {
const params = new URLSearchParams(window.location.search);
const urlKey = params.get("siteKey");
if (urlKey) return urlKey.trim();
const meta = document.querySelector('meta[name="site-key"]');
if (meta && meta.content) return meta.content.trim();
return window.location.hostname || "unknown";
}
function getRedirectUrl() {
const params = new URLSearchParams(window.location.search);
return params.get("redirect") || "/";
}
function setMessage(text, type) {
messageEl.textContent = text;
messageEl.classList.remove("form__message--error", "form__message--success");
if (type === "error") messageEl.classList.add("form__message--error");
if (type === "success") messageEl.classList.add("form__message--success");
}
form.addEventListener("submit", async (event) => {
event.preventDefault();
const formData = new FormData(form);
const login = String(formData.get("login") || "").trim();
const password = String(formData.get("password") || "");
const siteKey = getSiteKey();
if (!login || !password) {
setMessage("Введите логин и пароль.", "error");
return;
}
setMessage("Проверяем данные...", "");
const submitButton = form.querySelector("button[type='submit']");
submitButton.disabled = true;
try {
const response = await fetch("./api/login.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ login, password, siteKey }),
});
const data = await response.json().catch(() => ({}));
if (!response.ok) {
setMessage(data?.message || "Ошибка входа.", "error");
return;
}
setMessage("Доступ разрешен.", "success");
const redirect = getRedirectUrl();
setTimeout(() => {
window.location.href = redirect;
}, 400);
} catch (error) {
setMessage("Сеть недоступна.", "error");
} finally {
submitButton.disabled = false;
}
});