Files
NeoIDE/src/scripts/login.js
2026-01-19 23:44:32 -06:00

60 lines
1.6 KiB
JavaScript

import "@fortawesome/fontawesome-free/css/all.min.css";
import { toggleIcons, toggleTheme } from "../functions/theme";
import config from "../config";
toggleTheme();
toggleIcons();
const usernameInput = document.getElementById("username");
const passwordInput = document.getElementById("password");
const loginButton = document.getElementById("login");
async function onLoginClick(e) {
e.preventDefault();
const username = usernameInput.value.trim();
const password = passwordInput.value;
if (!username || !password) {
alert("Please enter both username and password.");
return;
}
loginButton.disabled = true;
loginButton.dataset.origHtml = loginButton.innerHTML;
loginButton.innerHTML = `...`;
try {
const response = await fetch(`${config.apiUrl}/users/login`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ username, password }),
});
if (!response.ok) {
let errText = `Request failed: ${response.status} ${response.statusText}`;
try {
const errJson = await response.json();
errText = errJson.message || JSON.stringify(errJson);
} catch (err) {}
throw new Error(errText);
}
const data = await response.json();
if (data.token) localStorage.setItem("tooken", data.token);
window.location.href = "/";
} catch (err) {
console.error(err);
alert("Login error: " + err.message);
loginButton.disabled = false;
loginButton.innerHTML = loginButton.dataset.origHtml;
}
}
loginButton.addEventListener("click", onLoginClick);