feat(platform): add audit logs and activity feed

This commit is contained in:
Schubert Ferenc 2026-07-03 00:04:44 +02:00
parent 92cb8d1286
commit c816e9869d
34 changed files with 1592 additions and 43 deletions

View file

@ -7,6 +7,7 @@ import { useParams } from "next/navigation";
import { ArrowLeft, KeyRound, Pencil } from "lucide-react";
import StatusBadge from "@/components/common/StatusBadge";
import { useToast } from "@/components/common/ToastProvider";
import { Button } from "@/components/ui/button";
import {
Dialog,
@ -41,6 +42,7 @@ function formatDateTime(value: string) {
}
export default function UserDetailPage() {
const { showToast } = useToast();
const params = useParams<{ id: string }>();
const [user, setUser] = useState<User | null>(null);
const [roles, setRoles] = useState<Role[]>([]);
@ -94,8 +96,11 @@ export default function UserDetailPage() {
const response = await api.put<User>(`/users/${user.id}`, payload);
setUser(response.data);
setFormOpen(false);
showToast({ type: "success", title: "Benutzer aktualisiert", description: response.data.username });
} catch (err) {
setFormError(getErrorMessage(err));
const message = getErrorMessage(err);
setFormError(message);
showToast({ type: "error", title: "Benutzer konnte nicht gespeichert werden", description: message });
} finally {
setPending(false);
}
@ -119,8 +124,11 @@ export default function UserDetailPage() {
setUser(response.data);
setPassword("");
setPasswordOpen(false);
showToast({ type: "success", title: "Passwort geändert", description: response.data.username });
} catch (err) {
setPasswordError(getErrorMessage(err));
const message = getErrorMessage(err);
setPasswordError(message);
showToast({ type: "error", title: "Passwort konnte nicht geändert werden", description: message });
} finally {
setPending(false);
}