first praktikum variant

This commit is contained in:
titver968
2025-04-16 08:47:54 +02:00
parent d2857684fe
commit 10c443285d
58 changed files with 16193 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
<script lang="ts">
let passwort = '';
let eingeloggt = false;
let fehler = false;
let anmeldungen = [];
async function login() {
const res = await fetch('/api/admin/login', {
method: 'POST',
body: JSON.stringify({ passwort }),
headers: { 'Content-Type': 'application/json' }
});
if (res.ok) {
eingeloggt = true;
fehler = false;
const result = await fetch('/api/admin/anmeldungen');
anmeldungen = await result.json();
} else {
fehler = true;
}
}
</script>
<div class="p-6 max-w-4xl mx-auto">
{#if !eingeloggt}
<div class="space-y-4">
<h1 class="text-2xl font-bold">Admin Login</h1>
<input type="password" bind:value={passwort} placeholder="Passwort" class="input w-full" />
<button on:click={login} class="bg-blue-600 text-white px-4 py-2 rounded">Login</button>
{#if fehler}
<p class="text-red-600">Falsches Passwort</p>
{/if}
</div>
{:else}
<p><a href="/admin/dienststellen" class="text-blue-600 underline">Dienststellen verwalten</a></p>
<h1 class="text-2xl font-bold mb-4">Alle Anmeldungen</h1>
<table class="w-full border text-sm">
<thead>
<tr class="bg-gray-200">
<th class="p-2 text-left">Name</th>
<th class="p-2 text-left">E-Mail</th>
<th class="p-2 text-left">Wunsch 13</th>
<th class="p-2 text-left">Datum</th>
</tr>
</thead>
<tbody>
{#each anmeldungen as a}
<tr class="border-t">
<td class="p-2">{a.anrede} {a.vorname} {a.nachname}</td>
<td class="p-2">{a.email}</td>
<td class="p-2">{a.wunsch1}, {a.wunsch2}, {a.wunsch3}</td>
<td class="p-2">{new Date(a.timestamp).toLocaleDateString()}</td>
</tr>
{/each}
</tbody>
</table>
{/if}
</div>
<style>
.input {
@apply border rounded px-3 py-2 w-full;
}