feat(admin): add /admin/journal audit log page

This commit is contained in:
Colin Maudry
2026-07-03 10:24:40 +02:00
parent f8d1e60519
commit 5d56f8180a
+58
View File
@@ -0,0 +1,58 @@
import dash_bootstrap_components as dbc
from dash import dash_table, html, register_page
from src.admin.db import list_actions
from src.admin.guard import is_admin
from src.pages.admin._shell import admin_nav, not_admin
register_page(
__name__,
path="/admin/journal",
title="Journal admin | colibre",
name="Journal admin",
description="Panneau d'administration interne.",
)
def _rows():
rows = []
for action in list_actions():
target = action["target_user_id"]
rows.append(
{
"date": action["created_at"],
"admin": action["admin_email"],
"action": action["action"],
"user": f"[{target}](/admin/user/{target})" if target else "",
"détails": action["details"] or "",
}
)
return rows
def layout(**_):
if not is_admin():
return not_admin()
return dbc.Container(
[
html.H2("Journal des actions admin"),
admin_nav("journal"),
dash_table.DataTable(
id="admin-journal-table",
columns=[
{"name": "Date", "id": "date"},
{"name": "Admin", "id": "admin"},
{"name": "Action", "id": "action"},
{"name": "User", "id": "user", "presentation": "markdown"},
{"name": "Détails", "id": "détails"},
],
data=_rows(),
sort_action="native",
page_action="native",
page_size=20,
markdown_options={"link_target": "_self"},
),
],
fluid=True,
className="py-4",
)