Aktueller Stand

This commit is contained in:
2026-01-16 23:02:36 +01:00
parent dcf45bac3d
commit b2b23268b2
14 changed files with 768 additions and 226 deletions

View File

@@ -6,6 +6,7 @@ export default function AdminSystemSettings() {
const [apiKey, setApiKey] = useState("");
const [provider, setProvider] = useState("osm");
const [registrationEnabled, setRegistrationEnabled] = useState(true);
const [publicAccessEnabled, setPublicAccessEnabled] = useState(true);
const [appName, setAppName] = useState("Vereinskalender");
const [logoFile, setLogoFile] = useState<File | null>(null);
const [logoVersion, setLogoVersion] = useState(() => Date.now());
@@ -26,6 +27,7 @@ export default function AdminSystemSettings() {
setApiKey(payload.apiKey || "");
setProvider(payload.provider || "osm");
setRegistrationEnabled(payload.registrationEnabled !== false);
setPublicAccessEnabled(payload.publicAccessEnabled !== false);
if (appNameResponse.ok) {
const appPayload = await appNameResponse.json();
setAppName(appPayload.name || "Vereinskalender");
@@ -61,7 +63,12 @@ export default function AdminSystemSettings() {
fetch("/api/settings/system", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ apiKey, provider, registrationEnabled })
body: JSON.stringify({
apiKey,
provider,
registrationEnabled,
publicAccessEnabled
})
}),
fetch("/api/settings/app-name", {
method: "POST",
@@ -224,14 +231,29 @@ export default function AdminSystemSettings() {
/>
</div>
)}
<label className="flex items-center gap-2 text-sm text-slate-700">
<input
type="checkbox"
checked={registrationEnabled}
onChange={(event) => setRegistrationEnabled(event.target.checked)}
/>
Registrierung erlauben
</label>
<div className="rounded-xl border border-slate-200 bg-slate-50/60 p-3 text-sm text-slate-700">
<p className="text-xs uppercase tracking-[0.2em] text-slate-500">
Zugriff
</p>
<div className="mt-3 space-y-3">
<label className="flex items-center gap-2">
<input
type="checkbox"
checked={publicAccessEnabled}
onChange={(event) => setPublicAccessEnabled(event.target.checked)}
/>
Öffentlicher Zugriff erlauben
</label>
<label className="flex items-center gap-2">
<input
type="checkbox"
checked={registrationEnabled}
onChange={(event) => setRegistrationEnabled(event.target.checked)}
/>
Registrierung erlauben
</label>
</div>
</div>
<button type="submit" className="btn-accent">
Speichern
</button>