Files
RoleForge/app/static/js/pages-auth.js
Sergey Antropoff 1d2301fb09 first commit
2026-04-30 08:59:31 +03:00

84 lines
3.0 KiB
JavaScript

window.dashboard = window.dashboard || {};
dashboard.initLogin = function initLogin() {
const form = document.getElementById("login-form");
if (!form) return;
form.addEventListener("submit", async (event) => {
event.preventDefault();
const payload = {
login: document.getElementById("login-username").value,
password: document.getElementById("login-password").value,
};
try {
const result = await dashboard.apiFetch("/auth/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
dashboard.setTokens(result.access_token, result.refresh_token);
dashboard.startAutoRefresh();
window.location.href = "/";
} catch (error) {
await dashboard.showErrorModal(error, "Login failed");
}
});
};
dashboard.initRegister = function initRegister() {
const form = document.getElementById("register-form");
if (!form) return;
form.addEventListener("submit", async (event) => {
event.preventDefault();
const payload = {
username: document.getElementById("register-username").value,
email: document.getElementById("register-email").value,
full_name: document.getElementById("register-full-name").value,
password: document.getElementById("register-password").value,
};
try {
const result = await dashboard.apiFetch("/auth/register", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
dashboard.setTokens(result.access_token, result.refresh_token);
dashboard.startAutoRefresh();
window.location.href = "/";
} catch (error) {
await dashboard.showErrorModal(error, "Registration failed");
}
});
};
dashboard.initResetPassword = function initResetPassword() {
const form = document.getElementById("reset-password-form");
if (!form) return;
form.addEventListener("submit", async (event) => {
event.preventDefault();
const login = document.getElementById("reset-username").value;
const newPassword = document.getElementById("reset-password").value;
try {
const forgot = await dashboard.apiFetch("/auth/forgot-password", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ login }),
});
if (!forgot.token_for_dev) {
await dashboard.infoDialog("If account exists, reset link has been generated.", {
title: "Request accepted",
okText: "Close",
});
return;
}
await dashboard.apiFetch("/auth/reset-password", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ token: forgot.token_for_dev, new_password: newPassword }),
});
await dashboard.infoDialog("Password reset successful", { title: "Success", okText: "Close" });
} catch (error) {
await dashboard.showErrorModal(error, "Password reset failed");
}
});
};