diff --git a/NEWS.md b/NEWS.md index 6d6512cb..851c5bc3 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,7 @@ * [MODAUD-265](https://folio-org.atlassian.net/browse/MODAUD-265) - Bump Inventory Item Storage API version from 10.1 to 11.0 * [MODAUD-284](https://folio-org.atlassian.net/browse/MODAUD-284) - Prepare sub-partitions on tenant init * [MODAUD-288](https://folio-org.atlassian.net/browse/MODAUD-288) - assertj: Upgrade from 3.27.3 to 3.27.7, change scope from compile to test +* [MODAUD-296](https://folio-org.atlassian.net/browse/MODAUD-296) - Implement User Audit Enabled Setting ## 2.11.1 2025-04-15 * [MODAUD-250](https://folio-org.atlassian.net/browse/MODAUD-250) - Version history of "MARC" records is not tracked diff --git a/descriptors/ModuleDescriptor-template.json b/descriptors/ModuleDescriptor-template.json index d419fb9b..c37689c4 100644 --- a/descriptors/ModuleDescriptor-template.json +++ b/descriptors/ModuleDescriptor-template.json @@ -480,6 +480,16 @@ "displayName": "Audit Configuration - enable/disable audit authority records", "description": "Enable/disable audit authority records" }, + { + "permissionName": "audit.config.groups.settings.audit.user.collection.get", + "displayName": "Audit Configuration - get settings for audit user group", + "description": "Get settings for audit user group" + }, + { + "permissionName": "audit.config.groups.settings.audit.user.enabled.item.put", + "displayName": "Audit Configuration - enable/disable audit user records", + "description": "Enable/disable audit user records" + }, { "permissionName": "audit.inventory.instance.collection.get", "displayName": "Inventory Audit - get instance events", diff --git a/mod-audit-server/src/main/java/org/folio/services/configuration/Setting.java b/mod-audit-server/src/main/java/org/folio/services/configuration/Setting.java index 21b20023..d9cff4ea 100644 --- a/mod-audit-server/src/main/java/org/folio/services/configuration/Setting.java +++ b/mod-audit-server/src/main/java/org/folio/services/configuration/Setting.java @@ -10,7 +10,8 @@ public enum Setting { AUTHORITY_RECORDS_RETENTION_PERIOD(SettingGroup.AUTHORITY, SettingKey.RETENTION_PERIOD), INVENTORY_RECORDS_RETENTION_PERIOD(SettingGroup.INVENTORY, SettingKey.RETENTION_PERIOD), INVENTORY_RECORDS_ENABLED(SettingGroup.INVENTORY, SettingKey.ENABLED), - AUTHORITY_RECORDS_ENABLED(SettingGroup.AUTHORITY, SettingKey.ENABLED); + AUTHORITY_RECORDS_ENABLED(SettingGroup.AUTHORITY, SettingKey.ENABLED), + USER_RECORDS_ENABLED(SettingGroup.USER, SettingKey.ENABLED); private final SettingGroup group; private final SettingKey key; diff --git a/mod-audit-server/src/main/java/org/folio/services/configuration/SettingGroup.java b/mod-audit-server/src/main/java/org/folio/services/configuration/SettingGroup.java index bdca97a3..81941a75 100644 --- a/mod-audit-server/src/main/java/org/folio/services/configuration/SettingGroup.java +++ b/mod-audit-server/src/main/java/org/folio/services/configuration/SettingGroup.java @@ -6,7 +6,8 @@ public enum SettingGroup { AUTHORITY("audit.authority"), - INVENTORY("audit.inventory"); + INVENTORY("audit.inventory"), + USER("audit.user"); private final String id; diff --git a/mod-audit-server/src/main/resources/templates/db_scripts/config/populate_setting_group_table.sql b/mod-audit-server/src/main/resources/templates/db_scripts/config/populate_setting_group_table.sql index 6599c344..300839c3 100644 --- a/mod-audit-server/src/main/resources/templates/db_scripts/config/populate_setting_group_table.sql +++ b/mod-audit-server/src/main/resources/templates/db_scripts/config/populate_setting_group_table.sql @@ -4,5 +4,8 @@ VALUES ('audit.inventory', 'Group of configurations for audit of inventory records: instances, holdings, items, etc.'), ('audit.authority', 'Authority Audit Configuration', - 'Group of configurations for audit of authority records') + 'Group of configurations for audit of authority records'), + ('audit.user', + 'User Audit Configuration', + 'Group of configurations for audit of user records') ON CONFLICT (id) DO NOTHING; diff --git a/mod-audit-server/src/main/resources/templates/db_scripts/config/populate_setting_table.sql b/mod-audit-server/src/main/resources/templates/db_scripts/config/populate_setting_table.sql index 08d3605e..89c2643b 100644 --- a/mod-audit-server/src/main/resources/templates/db_scripts/config/populate_setting_table.sql +++ b/mod-audit-server/src/main/resources/templates/db_scripts/config/populate_setting_table.sql @@ -58,5 +58,15 @@ VALUES ('audit.inventory.records.page.size', now(), '00000000-0000-0000-0000-000000000000', now(), + '00000000-0000-0000-0000-000000000000'), + ('audit.user.enabled', + 'enabled', + to_jsonb(false::boolean), + 'BOOLEAN', + 'Defines if the user audit is enabled', + 'audit.user', + now(), + '00000000-0000-0000-0000-000000000000', + now(), '00000000-0000-0000-0000-000000000000') ON CONFLICT (id) DO NOTHING; diff --git a/mod-audit-server/src/test/java/org/folio/rest/impl/AuditConfigAPITest.java b/mod-audit-server/src/test/java/org/folio/rest/impl/AuditConfigAPITest.java index 41a68c25..06288a78 100644 --- a/mod-audit-server/src/test/java/org/folio/rest/impl/AuditConfigAPITest.java +++ b/mod-audit-server/src/test/java/org/folio/rest/impl/AuditConfigAPITest.java @@ -6,6 +6,7 @@ import static org.folio.dao.configuration.SettingValueType.INTEGER; import static org.folio.services.configuration.SettingGroup.AUTHORITY; import static org.folio.services.configuration.SettingGroup.INVENTORY; +import static org.folio.services.configuration.SettingGroup.USER; import static org.folio.services.configuration.SettingKey.ENABLED; import static org.folio.services.configuration.SettingKey.RECORDS_PAGE_SIZE; import static org.folio.services.configuration.SettingKey.RETENTION_PERIOD; @@ -43,12 +44,18 @@ public class AuditConfigAPITest extends ApiTestBase { "audit.config.groups.settings.audit.authority.records.page.size.item.put", "audit.config.groups.settings.audit.authority.records.retention.period.item.put", "audit.config.groups.settings.audit.authority.collection.get"]"""); + private static final Header USER_PERMS_HEADER = new Header(XOkapiHeaders.PERMISSIONS, """ + ["audit.config.groups.settings.collection.get", + "audit.config.groups.settings.audit.user.enabled.item.put", + "audit.config.groups.settings.audit.user.collection.get"]"""); private static final Header USER_HEADER = new Header(XOkapiHeaders.USER_ID, UUID.randomUUID().toString()); private static final Header CONTENT_TYPE_HEADER = new Header("Content-Type", "application/json"); private static final Headers INVENTORY_HEADERS = new Headers(TENANT_HEADER, INVENTORY_PERMS_HEADER, USER_HEADER, CONTENT_TYPE_HEADER); private static final Headers AUTHORITY_HEADERS = new Headers(TENANT_HEADER, AUTHORITY_PERMS_HEADER, USER_HEADER, CONTENT_TYPE_HEADER); + private static final Headers USER_HEADERS = + new Headers(TENANT_HEADER, USER_PERMS_HEADER, USER_HEADER, CONTENT_TYPE_HEADER); private static final String AUDIT_CONFIG_GROUPS_PATH = "/audit/config/groups"; private static final String AUDIT_CONFIG_SETTINGS_PATH = "/audit/config/groups/%s/settings"; private static final String AUDIT_CONFIG_SETTING_ENTRY_PATH = "/audit/config/groups/%s/settings/%s"; @@ -59,7 +66,7 @@ void shouldReturnSettingGroupCollection() { .then().log().all() .statusCode(HttpStatus.HTTP_OK.toInt()) .assertThat() - .body("totalRecords", equalTo(2)) + .body("totalRecords", equalTo(3)) .body("settingGroups[0].id", equalTo(AUTHORITY.getId())); } @@ -145,7 +152,8 @@ private static Stream settingValues() { Arguments.of(INVENTORY.getId(), RETENTION_PERIOD.getValue(), 1, INTEGER, INVENTORY_HEADERS), Arguments.of(AUTHORITY.getId(), RETENTION_PERIOD.getValue(), 3, INTEGER, AUTHORITY_HEADERS), Arguments.of(INVENTORY.getId(), ENABLED.getValue(), false, BOOLEAN, INVENTORY_HEADERS), - Arguments.of(AUTHORITY.getId(), ENABLED.getValue(), false, BOOLEAN, AUTHORITY_HEADERS) + Arguments.of(AUTHORITY.getId(), ENABLED.getValue(), false, BOOLEAN, AUTHORITY_HEADERS), + Arguments.of(USER.getId(), ENABLED.getValue(), true, BOOLEAN, USER_HEADERS) ); }