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:
@@ -34,28 +34,6 @@ class SearchItemMapperProvider
|
||||
$label = trim($label . ' — ' . strtoupper($status));
|
||||
}
|
||||
$url = lurl('admin/mail-log/view/' . ($data['id'] ?? '')) . '?search=' . urlencode($query);
|
||||
} elseif ($key === 'api-audit') {
|
||||
$method = strtoupper(trim((string) ($data['method'] ?? '')));
|
||||
$path = trim((string) ($data['path'] ?? ''));
|
||||
$statusCode = (int) ($data['status_code'] ?? 0);
|
||||
$requestId = trim((string) ($data['request_id'] ?? ''));
|
||||
$label = trim($method . ' ' . $path);
|
||||
if ($statusCode > 0) {
|
||||
$label = trim($label . ' — ' . $statusCode);
|
||||
}
|
||||
if ($label === '' && $requestId !== '') {
|
||||
$label = $requestId;
|
||||
}
|
||||
$url = lurl('admin/api-audit/view/' . ($data['id'] ?? '')) . '?search=' . urlencode($query);
|
||||
} elseif ($key === 'system-audit') {
|
||||
$eventType = trim((string) ($data['event_type'] ?? ''));
|
||||
$outcome = strtolower(trim((string) ($data['outcome'] ?? '')));
|
||||
$requestId = trim((string) ($data['request_id'] ?? ''));
|
||||
$label = $eventType !== '' ? $eventType : $requestId;
|
||||
if ($outcome !== '') {
|
||||
$label = trim($label . ' — ' . $outcome);
|
||||
}
|
||||
$url = lurl('admin/system-audit/view/' . ($data['id'] ?? '')) . '?search=' . urlencode($query);
|
||||
} elseif ($key === 'pages') {
|
||||
$label = (string) ($data['slug'] ?? '');
|
||||
$url = lurl('page/' . $label) . '?search=' . urlencode($query);
|
||||
@@ -106,24 +84,6 @@ class SearchItemMapperProvider
|
||||
$toEmail = trim((string) ($data['to_email'] ?? ''));
|
||||
$description = trim(($status !== '' ? strtoupper($status) : '') . ($toEmail !== '' ? ' — ' . $toEmail : ''));
|
||||
$url = lurl('admin/mail-log/view/' . ($data['id'] ?? ''));
|
||||
} elseif ($key === 'api-audit') {
|
||||
$method = strtoupper(trim((string) ($data['method'] ?? '')));
|
||||
$path = trim((string) ($data['path'] ?? ''));
|
||||
$statusCode = (int) ($data['status_code'] ?? 0);
|
||||
$requestId = trim((string) ($data['request_id'] ?? ''));
|
||||
$title = trim($method . ' ' . $path);
|
||||
if ($title === '') {
|
||||
$title = $requestId;
|
||||
}
|
||||
$description = trim(($statusCode > 0 ? (string) $statusCode : '') . ($requestId !== '' ? ' — ' . $requestId : ''));
|
||||
$url = lurl('admin/api-audit/view/' . ($data['id'] ?? ''));
|
||||
} elseif ($key === 'system-audit') {
|
||||
$eventType = trim((string) ($data['event_type'] ?? ''));
|
||||
$outcome = strtolower(trim((string) ($data['outcome'] ?? '')));
|
||||
$requestId = trim((string) ($data['request_id'] ?? ''));
|
||||
$title = $eventType !== '' ? $eventType : $requestId;
|
||||
$description = trim(($outcome !== '' ? strtoupper($outcome) : '') . ($requestId !== '' ? ' — ' . $requestId : ''));
|
||||
$url = lurl('admin/system-audit/view/' . ($data['id'] ?? ''));
|
||||
} else {
|
||||
$title = (string) ($data['description'] ?? '');
|
||||
$description = $label;
|
||||
|
||||
Reference in New Issue
Block a user