import React, { useEffect, useState } from "react"; import { api } from "../api/client"; import { styles } from "../styles/styles"; import { stylesTokens } from "../styles/theme"; export default function AdminPanel() { const [users, setUsers] = useState([]); const [open, setOpen] = useState(false); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [role, setRole] = useState("user"); const [msg, setMsg] = useState(""); const loadUsers = async () => { const u = await api("/admin/users"); setUsers(u); }; useEffect(() => { loadUsers().catch(() => {}); }, []); const resetForm = () => { setEmail(""); setPassword(""); setRole("user"); }; const createUser = async () => { setMsg(""); try { await api("/admin/users", { method: "POST", body: JSON.stringify({ email, password, role }), }); setMsg("✅ User erstellt."); await loadUsers(); resetForm(); setOpen(false); } catch (e) { setMsg("❌ Fehler: " + (e?.message || "unknown")); } }; const closeModal = () => { setOpen(false); setMsg(""); }; return (
Admin Dashboard
Vorhandene User
{users.map((u) => (
{u.email}
{u.role}
{u.disabled ? "disabled" : "active"}
))}
{open && (
e.stopPropagation()}>
Neuen User anlegen
setEmail(e.target.value)} placeholder="Email" style={styles.input} autoFocus /> setPassword(e.target.value)} placeholder="Initial Passwort" type="password" style={styles.input} /> {msg &&
{msg}
}
Tipp: Klick auf Item: Grün → Rot → Grau → Leer
)}
); }