ZKRINET Docs
Byggblock

Granskningslogg

På Zkrinet: lägg till blocket under Byggblock i panelen — ett klick, din egen kod rörs inte och en ögonblicksbild tas först. Installationsstegen nedan gäller om du kör PocketBase själv, till exempel efter en export.

Vem ändrade vad, och när — för varje post som skapas, ändras eller raderas via API:t (din app, adminpanelen och batch-anrop). Loggen är manipuleringssäker: varje rad bär en SHA-256-hash av sitt eget innehåll plus föregående rads hash. Ändras eller raderas en rad i efterhand syns det direkt.

Testat mot PocketBase 0.40.4.

Installation

Kopiera pb_hooks/ och pb_migrations/ till din PocketBase och starta om. Loggningen börjar direkt.

Vad som loggas

En rad i zk_granskning per ändring:

FältInnehåll
nrLöpnummer, utan luckor
samling, post_id, handlingVad: create / update / delete
vem_typ, vem_id, vem_samlingVem: superuser, anvandare eller gast
andringarSkapad: alla värden. Ändrad: bara fält som ändrats, med före och efter. Raderad: värdena den hade.
tidNär (UTC)
ipBara om påslaget (se nedan)
foregaende, hashKedjan

Hemligheter loggas aldrig. Dolda fält visas som (dolt fält) och lösenordsbyten som (lösenord) — varken värdet eller hashen hamnar i loggen.

En ändring som inte ändrar något, och anrop som misslyckas, ger ingen rad. Ett batch-anrop som misslyckas rullas tillbaka helt — loggraderna också — så loggen påstår aldrig en ändring som inte blev av.

Kontrollera kedjan

GET /api/zk/granskning/verifiera     (superuser)
→ { "ok": true, "rader": 1532, "sista_nr": 1532, "fel": [] }

Är något fel står det vilken rad och vad: "Raden har ändrats efter att den skrevs." eller "Rad 40–41 saknas."

Loggen kan inte ändras eller raderas via API:t — inte ens av superusers.

Inställningar (miljövariabler)

VariabelStandardVad
ZK_GRANSKNING_SAMLINGARallaKommaseparerad lista om bara vissa samlingar ska loggas
ZK_GRANSKNING_IPav1 = spara avsändarens IP. IP-adresser är personuppgifter — slå bara på det om du har ett skäl, och nämn det i din integritetspolicy.
ZK_GRANSKNING_DAGARav (spara för alltid)Rensa rader äldre än så många dagar (varje natt 03:17, eller POST /api/zk/granskning/rensa). Bara de äldsta raderna i följd tas bort, så kedjan förblir hel.

Systemets egna samlingar (_superusers m.fl.) och pluginsamlingar (zk_…) loggas inte.

Begränsningar — läs innan du lovar en kund något

Testa

./bank.py granskningslogg

12 tester: vem/vad/när, gäst och superuser, att hemligheter aldrig loggas, tomma ändringar och fel, urval, IP, att loggen är låst, att kedjan avslöjar både ändrade och raderade rader, batch (lyckad och misslyckad), och rensning. Säkerhetstesterna är verifierade med mutanter.