fix(admin): persist data directory and pass env vars

This commit is contained in:
Schubert Ferenc 2026-07-03 22:25:04 +02:00
parent 99e8201745
commit 1d7e7c41c9
39 changed files with 1297 additions and 32 deletions

View file

@ -0,0 +1,50 @@
"use client";
import Image from "next/image";
import { useRouter } from "next/navigation";
import { useState, type FormEvent } from "react";
export default function AdminLoginForm({ nextPath = "/admin" }: { nextPath?: string }) {
const router = useRouter();
const [error, setError] = useState("");
const [pending, setPending] = useState(false);
async function submit(event: FormEvent<HTMLFormElement>) {
event.preventDefault();
setError("");
setPending(true);
try {
const response = await fetch("/api/admin/login", {
method: "POST",
body: new FormData(event.currentTarget),
});
const result = await response.json() as { message?: string };
if (!response.ok) throw new Error(result.message ?? "Anmeldung fehlgeschlagen.");
router.push(nextPath);
router.refresh();
} catch (err) {
setError(err instanceof Error ? err.message : "Anmeldung fehlgeschlagen.");
} finally {
setPending(false);
}
}
return (
<main className="admin-login-page">
<form className="admin-login-card" onSubmit={submit}>
<Image src="/funktechnik_schubert_logo.jpg" alt="Funktechnik Schubert" width={1672} height={941} priority />
<h1>Administration Login</h1>
<label>
E-Mail
<input name="email" type="email" autoComplete="username" required />
</label>
<label>
Passwort
<input name="password" type="password" autoComplete="current-password" required />
</label>
{error && <p className="error">{error}</p>}
<button className="button" type="submit" disabled={pending}>{pending ? "Anmeldung..." : "Anmelden"}</button>
</form>
</main>
);
}