/**
* Modul: Login-Seite
* Zweck: Anmeldeformular mit Username/Passwort, Fehlerbehandlung, Session-Start
* Abhängigkeiten: /api.js
*/
import { auth } from '/api.js';
/**
* Rendert die Login-Seite in den gegebenen Container.
* @param {HTMLElement} container
*/
export async function render(container) {
container.innerHTML = `
`;
const form = container.querySelector('#login-form');
const errorEl = container.querySelector('#login-error');
const submitBtn = container.querySelector('#login-btn');
form.addEventListener('submit', async (e) => {
e.preventDefault();
errorEl.hidden = true;
const username = form.username.value.trim();
const password = form.password.value;
if (!username || !password) {
showError(errorEl, 'Bitte alle Felder ausfüllen.');
return;
}
submitBtn.disabled = true;
submitBtn.textContent = 'Wird angemeldet …';
try {
await auth.login(username, password);
window.oikos.navigate('/');
} catch (err) {
showError(errorEl, err.status === 429
? 'Zu viele Versuche. Bitte warte kurz.'
: 'Ungültige Anmeldedaten.'
);
} finally {
submitBtn.disabled = false;
submitBtn.textContent = 'Anmelden';
}
});
}
function showError(el, message) {
el.textContent = message;
el.hidden = false;
}