fix(audit): harden module isolation and fix post-extraction drift

Fix 5 broken FQCN references (runtime errors) where core pages referenced
non-existent MintyPHP\Service\Audit\AuditMetadataEnricher and SystemAuditService.
Add AuditMetadataEnricherInterface with NullAuditMetadataEnricher fallback so
deactivating the audit module no longer crashes core edit pages.

Move audit search resources from core Search*Provider files into the module
via a new AuditSearchResourceProvider implementing the existing
SearchResourceProvider contract. Add module-specific purge permissions
(audit.api.purge, audit.imports.purge) replacing core ABILITY_ADMIN_SETTINGS_UPDATE.

Also fixes: session key prefix convention, hardcoded English string, $_SERVER
superglobal fallback, and manifest schema drift (i18n_path, group in ui_slots).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-26 10:03:27 +01:00
parent 1acb4d1934
commit 7a222f0b1f
26 changed files with 381 additions and 91 deletions

View File

@@ -13,8 +13,6 @@ class SearchUiMetaProvider
'scheduled-jobs' => 'bi-calendar-check',
'pages' => 'bi-file-text',
'mail-log' => 'bi-envelope-paper',
'api-audit' => 'bi-shield-check',
'system-audit' => 'bi-journal-lock',
'docs' => 'bi-journal-text',
];
@@ -27,8 +25,6 @@ class SearchUiMetaProvider
'scheduled-jobs',
'pages',
'mail-log',
'api-audit',
'system-audit',
];
public static function iconForKey(string $key): string
@@ -49,8 +45,6 @@ class SearchUiMetaProvider
'scheduled-jobs' => lurl('admin/scheduled-jobs') . '?search=' . $encoded,
'pages' => lurl(''),
'mail-log' => lurl('admin/mail-log') . '?search=' . $encoded,
'api-audit' => lurl('admin/api-audit') . '?search=' . $encoded,
'system-audit' => lurl('admin/system-audit') . '?search=' . $encoded,
default => lurl(''),
};
}