mirror of
https://github.com/guyg1474/hcrb.git
synced 2026-10-15 23:13:28 +02:00
Erste Version: HCRB Spieltag-Kalender und Fahrtplaner
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
10400eee59
30 files changed
+3771
No files matched your search
@@ -0,0 +1,34 @@
|
||||
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();
|
||||
Reference in new issue
Block a user