feat(beheer): admin audit view at /beheer/audit (finishes WP-42)

The WP-41 GET /admin/audit trail now has an FE view: a beheer audit page (domain
AuditEntry + adapter/parse + store) rendering the data-minimised trail as a read-only
table, capability-gated on cases:manage. Added to ADMIN_LINKS (header nav + dashboard
Beheer section) and to the role.interceptor ROLE_AWARE list so the admin-gated call
carries X-Role. Closes WP-42's audit half.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
eho
2026-07-23 16:05:36 +02:00
co-authored by Claude Opus 4.8
parent 0f30143c5d
commit 8cd925717f
11 changed files with 443 additions and 51 deletions
+56
View File
@@ -3658,6 +3658,62 @@
<source>Aanvragen</source>
<target datatype="html">Cases</target>
</trans-unit>
<trans-unit id="header.nav.audit" datatype="html">
<source>Auditlog</source>
<target datatype="html">Audit log</target>
</trans-unit>
<trans-unit id="admin.link.audit.desc" datatype="html">
<source>Toegangs- en inzagebeslissingen bekijken</source>
<target datatype="html">View access and disclosure decisions</target>
</trans-unit>
<trans-unit id="audit.heading" datatype="html">
<source>Auditlog</source>
<target datatype="html">Audit log</target>
</trans-unit>
<trans-unit id="audit.intro" datatype="html">
<source>Toegangs- en inzagebeslissingen (autorisatie en het tonen van afgeschermde gegevens). Vastgelegd zonder persoonsgegevens.</source>
<target datatype="html">Access and disclosure decisions (authorization and revealing masked data). Recorded without personal data.</target>
</trans-unit>
<trans-unit id="audit.denied" datatype="html">
<source>U hebt geen rechten om de auditlog te bekijken.</source>
<target datatype="html">You do not have permission to view the audit log.</target>
</trans-unit>
<trans-unit id="audit.failed" datatype="html">
<source>De auditlog kon niet worden geladen.</source>
<target datatype="html">The audit log could not be loaded.</target>
</trans-unit>
<trans-unit id="audit.empty" datatype="html">
<source>Nog geen auditregels.</source>
<target datatype="html">No audit entries yet.</target>
</trans-unit>
<trans-unit id="audit.retry" datatype="html">
<source>Opnieuw proberen</source>
<target datatype="html">Try again</target>
</trans-unit>
<trans-unit id="audit.col.tijd" datatype="html">
<source>Tijd</source>
<target datatype="html">Time</target>
</trans-unit>
<trans-unit id="audit.col.actie" datatype="html">
<source>Actie</source>
<target datatype="html">Action</target>
</trans-unit>
<trans-unit id="audit.col.resource" datatype="html">
<source>Resource</source>
<target datatype="html">Resource</target>
</trans-unit>
<trans-unit id="audit.col.besluit" datatype="html">
<source>Besluit</source>
<target datatype="html">Decision</target>
</trans-unit>
<trans-unit id="audit.col.rol" datatype="html">
<source>Rol</source>
<target datatype="html">Role</target>
</trans-unit>
<trans-unit id="audit.col.cid" datatype="html">
<source>Correlatie-id</source>
<target datatype="html">Correlation id</target>
</trans-unit>
<trans-unit id="dashboard.beheer" datatype="html">
<source>Beheer</source>
<target datatype="html">Administration</target>