Files
Gambling_API/public/frontend_login.js
T
2026-09-09 10:48:55 +02:00

21 lines
1.3 KiB
JavaScript

document.addEventListener('DOMContentLoaded', () => {
const form = document.querySelector('form');
const error = document.getElementById('auth-error');
let pending = false;
async function authenticate(endpoint) {
if (pending || !form.reportValidity()) return;
pending = true; error.textContent = ''; error.classList.add('hidden');
for (const button of form.querySelectorAll('button')) button.disabled = true;
try {
const response = await fetch(endpoint, {method: 'POST', credentials: 'same-origin', headers: {'Content-Type': 'application/json'},
body: JSON.stringify({username: form.username.value, password: form.password.value})});
const data = await response.json();
if (!response.ok) throw new Error(data.error || 'Authentication failed');
location.assign('/');
} catch (problem) {error.textContent = problem.message; error.classList.remove('hidden');}
finally {pending = false; for (const button of form.querySelectorAll('button')) button.disabled = false;}
}
form.addEventListener('submit', event => {event.preventDefault(); authenticate('/login');});
document.getElementById('register-button').addEventListener('click', () => authenticate('/register'));
});