import { $, api, renderHeader, renderFooter } from './common.js'; renderHeader('login'); renderFooter(); // Nur Pfade auf dieser Seite zulassen (kein Weiterleiten auf fremde Seiten) function nextUrl() { const next = new URLSearchParams(location.search).get('next') || ''; return next.startsWith('/') && !next.startsWith('//') && !next.startsWith('/\\') ? next : '/kalender'; } const { user } = await api('GET', '/me'); if (user) location.replace(nextUrl()); $('#login-form').addEventListener('submit', async (e) => { e.preventDefault(); const error = $('#login-error'); const button = e.target.querySelector('button'); error.hidden = true; button.disabled = true; try { await api('POST', '/login', { username: $('#login-user').value, password: $('#login-password').value }); location.replace(nextUrl()); } catch (err) { error.textContent = err.message; error.hidden = false; $('#login-password').value = ''; $('#login-password').focus(); } finally { button.disabled = false; } }); $('#login-user').focus();