From d60b4588d4bc7317f2b45e4c07abcd48c46804a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Cohen=20Arazi?= Date: Wed, 17 Sep 2025 14:18:37 -0300 Subject: [PATCH] Bug 20638: Add APIKEYS support to log viewer Add comprehensive support for viewing API key logs in the log viewer: tools/viewlog.pl: - Add APIKEYS to patron lookup logic alongside MEMBERS, CIRCULATION, FINES - Enable patron name display for API key log entries koha-tmpl/.../viewlog.tt: - Add APIKEYS to the modules list for filtering - Add ACTIVATE and REVOKE to the actions list for filtering - Include APIKEYS in patron display logic for object column koha-tmpl/.../action-logs.inc: - Add APIKEYS module translation: 'API keys' - Include ApiKeyLog system preference check with warning icon - Add ACTIVATE and REVOKE action translations - Maintain alphabetical order in translation blocks This enables librarians to view and filter API key creation, activation, revocation, and deletion activities in the standard log viewer interface, with proper patron name resolution and preference-based logging status indicators. Signed-off-by: Paul Derscheid Signed-off-by: Lisette Scheer Signed-off-by: Martin Renvoize --- .../prog/en/includes/action-logs.inc | 6 ++++ .../prog/en/modules/tools/viewlog.tt | 36 ++++++++++++------- tools/viewlog.pl | 8 +++-- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc index b863662511d..fe313ec8547 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc @@ -1,5 +1,7 @@ [% BLOCK translate_log_module %] [% SWITCH module %] + [% CASE 'APIKEYS' %] + API keys[% UNLESS Koha.Preference('ApiKeyLog') %][% END %] [% CASE 'AUTH' %] Authentication[% UNLESS Koha.Preference('AuthFailureLog') && Koha.Preference('AuthSuccessLog') %] @@ -49,12 +51,16 @@ [% BLOCK translate_log_action %] [% SWITCH action %] + [% CASE 'ACTIVATE' %] + Activate [% CASE 'ADD' %] Add [% CASE 'DELETE' %] Delete [% CASE 'MODIFY' %] Modify + [% CASE 'REVOKE' %] + Revoke [% CASE 'ISSUE' %] Checkout [% CASE 'RETURN' %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt index 6e434a5c67f..42634a034e8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt @@ -123,7 +123,7 @@ [% ELSE %] [% END %] - [% FOREACH modx IN [ 'AUTH' 'CATALOGUING' 'AUTHORITIES' 'MEMBERS' 'ACQUISITIONS' 'SERIAL' 'HOLDS' 'ILL' 'CIRCULATION' 'CLAIMS' 'FINES' 'SYSTEMPREFERENCE' 'CRONJOBS', 'REPORTS', 'SEARCHENGINE', 'NOTICES', 'NEWS', 'RECALLS', 'SUGGESTION', 'TRANSFERS' ] %] + [% FOREACH modx IN [ 'APIKEYS' 'AUTH' 'CATALOGUING' 'AUTHORITIES' 'MEMBERS' 'ACQUISITIONS' 'SERIAL' 'HOLDS' 'ILL' 'CIRCULATION' 'CLAIMS' 'FINES' 'SYSTEMPREFERENCE' 'CRONJOBS', 'REPORTS', 'SEARCHENGINE', 'NOTICES', 'NEWS', 'RECALLS', 'SUGGESTION', 'TRANSFERS' ] %] [% IF modules.grep(modx).size %] All [% END %] - [% FOREACH actx IN [ 'ADD' 'DELETE' 'MODIFY' 'ISSUE' 'RETURN' 'RENEW' 'CREATE' 'CANCEL' 'FILL' 'SUSPEND' 'RESUME' 'ADDCIRCMESSAGE' 'MODCIRCMESSAGE' 'DELCIRCMESSAGE' 'STATUS_CHANGE' 'PATRON_NOTICE' 'CHANGE PASS' 'RESET PASS' 'Run' 'End' 'PATRON_MERGE' 'EDIT_MAPPINGS' 'RESET_MAPPINGS' 'ADD_BASKET' 'MODIFY_BASKET' 'MODIFY_BASKET_HEADER' 'MODIFY_BASKET_USERS' 'CLOSE_BASKET' 'APPROVE_BASKET' 'REOPEN_BASKET' 'CANCEL_ORDER' 'CREATE_ORDER' 'MODIFY_ORDER' 'CREATE_INVOICE_ADJUSTMENT' 'UPDATE_INVOICE_ADJUSTMENT' 'DELETE_INVOICE_ADJUSTMENT' 'RECEIVE_ORDER' 'MODIFY_BUDGET' 'MODIFY_FUND' 'CREATE_FUND' 'DELETE_FUND' 'ACQUISITION CLAIM' 'ACQUISITION ORDER' 'OVERDUE' 'EXPIRE' 'CREATE_RESTRICTION' 'MODIFY_RESTRICTION' 'DELETE_RESTRICTION' 'MODIFY_CARDNUMBER' 'RESET 2FA' ] %] + [% FOREACH actx IN [ 'ACTIVATE' 'ADD' 'DELETE' 'MODIFY' 'REVOKE' 'ISSUE' 'RETURN' 'RENEW' 'CREATE' 'CANCEL' 'FILL' 'SUSPEND' 'RESUME' 'ADDCIRCMESSAGE' 'MODCIRCMESSAGE' 'DELCIRCMESSAGE' 'STATUS_CHANGE' 'PATRON_NOTICE' 'CHANGE PASS' 'RESET PASS' 'Run' 'End' 'PATRON_MERGE' 'EDIT_MAPPINGS' 'RESET_MAPPINGS' 'ADD_BASKET' 'MODIFY_BASKET' 'MODIFY_BASKET_HEADER' 'MODIFY_BASKET_USERS' 'CLOSE_BASKET' 'APPROVE_BASKET' 'REOPEN_BASKET' 'CANCEL_ORDER' 'CREATE_ORDER' 'MODIFY_ORDER' 'CREATE_INVOICE_ADJUSTMENT' 'UPDATE_INVOICE_ADJUSTMENT' 'DELETE_INVOICE_ADJUSTMENT' 'RECEIVE_ORDER' 'MODIFY_BUDGET' 'MODIFY_FUND' 'CREATE_FUND' 'DELETE_FUND' 'ACQUISITION CLAIM' 'ACQUISITION ORDER' 'OVERDUE' 'EXPIRE' 'CREATE_RESTRICTION' 'MODIFY_RESTRICTION' 'DELETE_RESTRICTION' 'MODIFY_CARDNUMBER' 'RESET 2FA' ] %] [% IF actions.grep(actx).size %] [% PROCESS translate_log_module module=loopro.module %] [% PROCESS translate_log_action action=loopro.action %] - [% IF ( loopro.module == 'MEMBERS' ) || ( loopro.module == 'CIRCULATION' ) || ( loopro.module == 'FINES' ) %] + [% IF ( loopro.module == 'MEMBERS' ) || ( loopro.module == 'CIRCULATION' ) || ( loopro.module == 'FINES' ) || ( loopro.module == 'APIKEYS' ) %] [% IF loopro.patron %] - - [% IF ( loopro.object ) %][% IF ( loopro.patron.firstname ) || ( loopro.patron.surname ) %] - [% loopro.patron.firstname | html %] - [% loopro.patron.surname | html %] - ([% loopro.object | html %]) - [% ELSE %] - Member [% loopro.object | html %] - [% END %][% END %] - + [% IF ( loopro.module == 'APIKEYS' ) %] + + API keys for [% loopro.patron.firstname | html %] [% loopro.patron.surname | html %] ([% loopro.object | html %]) + + [% ELSE %] + + [% IF ( loopro.object ) %][% IF ( loopro.patron.firstname ) || ( loopro.patron.surname ) %] + [% loopro.patron.firstname | html %] + [% loopro.patron.surname | html %] + ([% loopro.object | html %]) + [% ELSE %] + Member [% loopro.object | html %] + [% END %][% END %] + + [% END %] [% ELSE %] - [% loopro.object | html %] + [% IF ( loopro.module == 'APIKEYS' ) %] + API keys for patron [% loopro.object | html %] + [% ELSE %] + [% loopro.object | html %] + [% END %] [% END %] [% ELSIF ( loopro.module == 'CATALOGUING' ) %] [% IF ( loopro.info.substr(0, 4) == 'item' ) %] diff --git a/tools/viewlog.pl b/tools/viewlog.pl index 73d35670c78..26bc8af8053 100755 --- a/tools/viewlog.pl +++ b/tools/viewlog.pl @@ -203,8 +203,12 @@ if ($do_it) { } } - #add firstname and surname for borrower, when using the CIRCULATION, MEMBERS, FINES - if ( $log->module eq "CIRCULATION" || $log->module eq "MEMBERS" || $log->module eq "FINES" ) { + #add firstname and surname for borrower, when using the CIRCULATION, MEMBERS, FINES, APIKEYS + if ( $log->module eq "CIRCULATION" + || $log->module eq "MEMBERS" + || $log->module eq "FINES" + || $log->module eq "APIKEYS" ) + { if ( $log->object ) { my $patron = Koha::Patrons->find( $log->object ); if ( $patron && $output eq 'screen' ) { -- 2.51.1