84 lines
3.0 KiB
JavaScript
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");
|
|
}
|
|
});
|
|
};
|