From 7f6e363c8f836a4a2c062480502f8eb3b1d0a956 Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Tue, 30 Aug 2022 13:38:12 +0200 Subject: [PATCH] store http request in audit log --- .../resources/db/changelog/010-context.sql | 26 ++++++++++++++++++- .../resources/db/changelog/020-audit-log.sql | 13 +++++----- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/main/resources/db/changelog/010-context.sql b/src/main/resources/db/changelog/010-context.sql index 2d3486df..b046a088 100644 --- a/src/main/resources/db/changelog/010-context.sql +++ b/src/main/resources/db/changelog/010-context.sql @@ -69,12 +69,36 @@ begin if (currentTask is null or currentTask = '') then raise exception '[401] currentTask must be defined, please call `defineContext(...)`'; end if; - raise debug 'currentTask: %', currentTask; return currentTask; end; $$; --// +-- ============================================================================ +--changeset context-CURRENT-REQUEST:1 endDelimiter:--// +-- ---------------------------------------------------------------------------- +/* + Returns the current http request as set via `defineContext(...)`. + Raises exception if not set. + */ +create or replace function currentRequest() + returns varchar(512) + stable leakproof + language plpgsql as $$ +declare + currentRequest varchar(512); +begin + begin + currentRequest := current_setting('hsadminng.currentRequest'); + exception + when others then + currentRequest := null; + end; + return currentRequest; +end; $$; +--// + + -- ============================================================================ --changeset context-CURRENT-USER:1 endDelimiter:--// -- ---------------------------------------------------------------------------- diff --git a/src/main/resources/db/changelog/020-audit-log.sql b/src/main/resources/db/changelog/020-audit-log.sql index f3a129d0..99704894 100644 --- a/src/main/resources/db/changelog/020-audit-log.sql +++ b/src/main/resources/db/changelog/020-audit-log.sql @@ -23,11 +23,12 @@ do $$ */ create table tx_context ( - txId bigint primary key not null, - txTimestamp timestamp not null, - currentUser varchar(63) not null, -- not the uuid, because users can be deleted - assumedRoles varchar not null, -- not the uuids, because roles can be deleted - currentTask varchar not null + txId bigint primary key not null, + txTimestamp timestamp not null, + currentUser varchar(63) not null, -- not the uuid, because users can be deleted + assumedRoles varchar not null, -- not the uuids, because roles can be deleted + currentTask varchar(96) not null, + currentRequest varchar(512) not null ); create index on tx_context using brin (txTimestamp); @@ -65,7 +66,7 @@ begin insert into tx_context values (txid_current(), now(), - currentUser(), assumedRoles(), currentTask()) + currentUser(), assumedRoles(), currentTask(), currentRequest()) on conflict do nothing; case tg_op