import { useEffect, useState } from "react"; import { api } from "../api"; import { useConfirm } from "../confirm"; import { useAuth } from "../auth"; import Icon from "../components/Icon"; import { useToast } from "../toast"; export default function Users() { const confirm = useConfirm(); const { user: me } = useAuth(); const toast = useToast(); const [users, setUsers] = useState([]); const [form, setForm] = useState({ username: "", password: "", role: "user" }); const [error, setError] = useState(null); async function load() { try { setUsers(await api.listUsers()); } catch (err) { setError(err.message); } } useEffect(() => { load(); }, []); async function add(e) { e.preventDefault(); setError(null); try { await api.createUser(form); setForm({ username: "", password: "", role: "user" }); toast("Benutzer angelegt."); load(); } catch (err) { setError(err.message); } } async function changeRole(u, role) { try { await api.updateUser(u.id, { role }); load(); } catch (err) { setError(err.message); } } async function remove(u) { const ok = await confirm({ title: `Benutzer „${u.username}“ löschen?`, message: "Die Anmeldung mit diesem Konto ist danach nicht mehr möglich.", confirmLabel: "Löschen", danger: true, }); if (!ok) return; try { await api.deleteUser(u.id); load(); } catch (err) { setError(err.message); } } return (
| Name | Rolle | |
|---|---|---|
| {u.username}{u.id === me.id && (du)} | {u.id !== me.id && ( )} |