import { redirect } from "next/navigation"; import { calcPagination, parseListParams } from "@/lib/admin-helpers"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { getAuditLogs } from "@/lib/services/audit"; import { AuditTable } from "./audit-table"; export default async function AuditLogsPage({ params: paramsPromise, searchParams, }: { params: Promise<{ locale: string }>; searchParams: Promise>; }) { await paramsPromise; const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.LOGS_VIEW, session.user.rank)) { redirect("/admin"); } const params = await searchParams; const sp = new URLSearchParams(params); const { search, perPage, page } = parseListParams(sp); const result = await getAuditLogs({ search, page, perPage }); const pagination = calcPagination(result.total, result.page, result.perPage); const rows = result.rows.map((r) => ({ id: r.id, username: r.username, action: r.action, target: r.target, targetId: r.targetId, diff: r.diff, createdAt: r.createdAt, })); return (

Audit Logs

Track admin actions and changes

); }