From ce402c96167b8b5d551462fcc201b90953115f44 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. --- .../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 6b0deca636..0e7847b6ae 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 44e6e4b20e..598e3b5c0b 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' ] %] + [% 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' ] %] [% 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 2655b2e8fb..656cc3657f 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.0