fix(audit): update routes from admin/ to audit/ and fix module namespaces

Routes in nav items, redirects, breadcrumbs, and JS data URLs all pointed
to the old admin/ prefix from before the module was restructured. Also
corrects use-statements still referencing core Domain\Taxonomy namespace
instead of Module\Audit\Domain.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-26 09:14:25 +01:00
parent a93788acf1
commit 292865b0f7
22 changed files with 65 additions and 65 deletions

View File

@@ -51,7 +51,7 @@ return [
'key' => 'audit-api-audit',
'group' => 'admin-logs',
'label' => 'API audit',
'path' => 'admin/api-audit',
'path' => 'audit/api-audit',
'permission' => 'audit.api.view',
'order' => 200,
],
@@ -59,7 +59,7 @@ return [
'key' => 'audit-system-audit',
'group' => 'admin-logs',
'label' => 'System audit logs',
'path' => 'admin/system-audit',
'path' => 'audit/system-audit',
'permission' => 'audit.system.view',
'order' => 210,
],
@@ -67,7 +67,7 @@ return [
'key' => 'audit-import-audit',
'group' => 'admin-logs',
'label' => 'Import logs',
'path' => 'admin/import-audit',
'path' => 'audit/import-audit',
'permission' => 'audit.imports.view',
'order' => 220,
],
@@ -75,7 +75,7 @@ return [
'key' => 'audit-user-lifecycle-audit',
'group' => 'admin-logs',
'label' => 'User lifecycle logs',
'path' => 'admin/user-lifecycle-audit',
'path' => 'audit/user-lifecycle-audit',
'permission' => 'audit.user_lifecycle.view',
'order' => 230,
],

View File

@@ -24,7 +24,7 @@ ob_start();
<?php
$listPurgeEnabled = $canPurgeApiAudit;
$listPurgeFormId = 'api-audit-purge-form';
$listPurgeAction = 'admin/api-audit/purge';
$listPurgeAction = 'audit/api-audit/purge';
$listPurgeConfirmMessage = t('Purge entries older than 90 days?');
$listPurgeButtonLabel = t('Purge API audit logs');
require templatePath('partials/app-list-purge-action.phtml');

View File

@@ -9,15 +9,15 @@ Guard::requireLogin();
Guard::requireAbility(\MintyPHP\Service\Access\SettingsAuthorizationPolicy::ABILITY_ADMIN_SETTINGS_UPDATE);
if (strtoupper((string) (requestInput()->method())) !== 'POST') {
Router::redirect('admin/api-audit');
Router::redirect('audit/api-audit');
}
$errorBag = formErrors();
if (!Session::checkCsrfToken()) {
$errorBag->addGlobal(t('Form expired, please try again'));
flashFormErrors($errorBag, 'admin/api-audit', 'api_audit');
Router::redirect('admin/api-audit');
flashFormErrors($errorBag, 'audit/api-audit', 'api_audit');
Router::redirect('audit/api-audit');
}
$deleted = app(\MintyPHP\Module\Audit\Service\ApiAuditService::class)->purgeExpired();
Flash::success(sprintf(t('%d API audit entries purged'), $deleted), 'admin/api-audit', 'api_audit_purged');
Router::redirect('admin/api-audit');
Flash::success(sprintf(t('%d API audit entries purged'), $deleted), 'audit/api-audit', 'api_audit_purged');
Router::redirect('audit/api-audit');

View File

@@ -11,8 +11,8 @@ Guard::requireAbility(\MintyPHP\Module\Audit\AuditAuthorizationPolicy::ABILITY_A
$auditId = (int) ($id ?? 0);
$auditLog = $auditId > 0 ? app(\MintyPHP\Module\Audit\Service\ApiAuditService::class)->find($auditId) : null;
if (!$auditLog) {
Flash::error('API audit entry not found', 'admin/api-audit', 'api_audit_not_found');
Router::redirect('admin/api-audit');
Flash::error('API audit entry not found', 'audit/api-audit', 'api_audit_not_found');
Router::redirect('audit/api-audit');
}
Buffer::set('title', t('View API audit entry'));

View File

@@ -53,14 +53,14 @@ $tokenTenantId = (int) ($auditLog['token_tenant_id'] ?? 0);
<?php
$breadcrumbs = [
['label' => t('Home'), 'path' => 'admin'],
['label' => t('API audit logs'), 'path' => 'admin/api-audit'],
['label' => t('API audit logs'), 'path' => 'audit/api-audit'],
['label' => t('View')],
];
require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => t('View API audit entry'),
'backHref' => 'admin/api-audit',
'backHref' => 'audit/api-audit',
'backTitle' => t('Back'),
];
require templatePath('partials/app-details-titlebar.phtml');

View File

@@ -24,7 +24,7 @@ ob_start();
<?php
$listPurgeEnabled = $canPurgeImportAudit;
$listPurgeFormId = 'import-audit-purge-form';
$listPurgeAction = 'admin/import-audit/purge';
$listPurgeAction = 'audit/import-audit/purge';
$listPurgeConfirmMessage = t('Purge entries older than 90 days?');
$listPurgeButtonLabel = t('Purge import logs');
require templatePath('partials/app-list-purge-action.phtml');

View File

@@ -10,15 +10,15 @@ Guard::requireLogin();
Guard::requireAbility(\MintyPHP\Service\Access\SettingsAuthorizationPolicy::ABILITY_ADMIN_SETTINGS_UPDATE);
if (strtoupper((string) (requestInput()->method())) !== 'POST') {
Router::redirect('admin/import-audit');
Router::redirect('audit/import-audit');
}
$errorBag = formErrors();
if (!Session::checkCsrfToken()) {
$errorBag->addGlobal(t('Form expired, please try again'));
flashFormErrors($errorBag, 'admin/import-audit', 'import_audit');
Router::redirect('admin/import-audit');
flashFormErrors($errorBag, 'audit/import-audit', 'import_audit');
Router::redirect('audit/import-audit');
}
$deleted = app(ImportAuditService::class)->purgeExpired();
Flash::success(sprintf(t('%d import audit entries purged'), $deleted), 'admin/import-audit', 'import_audit_purged');
Router::redirect('admin/import-audit');
Flash::success(sprintf(t('%d import audit entries purged'), $deleted), 'audit/import-audit', 'import_audit_purged');
Router::redirect('audit/import-audit');

View File

@@ -11,8 +11,8 @@ Guard::requireAbility(\MintyPHP\Module\Audit\AuditAuthorizationPolicy::ABILITY_I
$runId = (int) ($id ?? 0);
$auditRun = $runId > 0 ? app(\MintyPHP\Module\Audit\Service\ImportAuditService::class)->find($runId) : null;
if (!$auditRun) {
Flash::error(t('Import audit entry not found'), 'admin/import-audit', 'import_audit_not_found');
Router::redirect('admin/import-audit');
Flash::error(t('Import audit entry not found'), 'audit/import-audit', 'import_audit_not_found');
Router::redirect('audit/import-audit');
}
Buffer::set('title', t('View import audit entry'));

View File

@@ -1,5 +1,5 @@
<?php
use MintyPHP\Domain\Taxonomy\ImportAuditStatus;
use MintyPHP\Module\Audit\Domain\ImportAuditStatus;
/**
* @var array $auditRun
@@ -56,14 +56,14 @@ if ($tenantLabel === '') {
<?php
$breadcrumbs = [
['label' => t('Home'), 'path' => 'admin'],
['label' => t('Import audit logs'), 'path' => 'admin/import-audit'],
['label' => t('Import audit logs'), 'path' => 'audit/import-audit'],
['label' => t('View')],
];
require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => t('View import audit entry'),
'backHref' => 'admin/import-audit',
'backHref' => 'audit/import-audit',
'backTitle' => t('Back'),
];
require templatePath('partials/app-details-titlebar.phtml');

View File

@@ -25,7 +25,7 @@ ob_start();
<?php
$listPurgeEnabled = $canPurgeSystemAudit;
$listPurgeFormId = 'system-audit-purge-form';
$listPurgeAction = 'admin/system-audit/purge';
$listPurgeAction = 'audit/system-audit/purge';
$listPurgeConfirmMessage = t('Purge expired system audit entries?');
$listPurgeButtonLabel = t('Purge system audit logs');
require templatePath('partials/app-list-purge-action.phtml');

View File

@@ -12,14 +12,14 @@ Guard::requireLogin();
Guard::requireAbility(AuditAuthorizationPolicy::ABILITY_SYSTEM_AUDIT_PURGE);
if (strtoupper((string) requestInput()->method()) !== 'POST') {
Router::redirect('admin/system-audit');
Router::redirect('audit/system-audit');
}
$errorBag = formErrors();
if (!Session::checkCsrfToken()) {
$errorBag->addGlobal(t('Form expired, please try again'));
flashFormErrors($errorBag, 'admin/system-audit', 'system_audit');
Router::redirect('admin/system-audit');
flashFormErrors($errorBag, 'audit/system-audit', 'system_audit');
Router::redirect('audit/system-audit');
}
$service = app(SystemAuditService::class);
@@ -28,5 +28,5 @@ $service->record('admin.system_audit.purge', SystemAuditOutcome::Success->value,
'metadata' => ['deleted_count' => $deleted],
]);
Flash::success(sprintf(t('%d system audit entries purged'), $deleted), 'admin/system-audit', 'system_audit_purged');
Router::redirect('admin/system-audit');
Flash::success(sprintf(t('%d system audit entries purged'), $deleted), 'audit/system-audit', 'system_audit_purged');
Router::redirect('audit/system-audit');

View File

@@ -13,8 +13,8 @@ Guard::requireAbility(AuditAuthorizationPolicy::ABILITY_SYSTEM_AUDIT_VIEW);
$auditId = (int) ($id ?? 0);
$auditLog = $auditId > 0 ? app(SystemAuditService::class)->find($auditId) : null;
if (!$auditLog) {
Flash::error(t('System audit entry not found'), 'admin/system-audit', 'system_audit_not_found');
Router::redirect('admin/system-audit');
Flash::error(t('System audit entry not found'), 'audit/system-audit', 'system_audit_not_found');
Router::redirect('audit/system-audit');
}
Buffer::set('title', t('View system audit entry'));

View File

@@ -1,5 +1,5 @@
<?php
use MintyPHP\Domain\Taxonomy\SystemAuditOutcome;
use MintyPHP\Module\Audit\Domain\SystemAuditOutcome;
/**
* @var array $auditLog
@@ -49,14 +49,14 @@ if ($tenantLabel === '') {
<?php
$breadcrumbs = [
['label' => t('Home'), 'path' => 'admin'],
['label' => t('System audit logs'), 'path' => 'admin/system-audit'],
['label' => t('System audit logs'), 'path' => 'audit/system-audit'],
['label' => t('View')],
];
require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => t('View system audit entry'),
'backHref' => 'admin/system-audit',
'backHref' => 'audit/system-audit',
'backTitle' => t('Back'),
];
require templatePath('partials/app-details-titlebar.phtml');

View File

@@ -24,7 +24,7 @@ ob_start();
<?php
$listPurgeEnabled = $canPurge;
$listPurgeFormId = 'user-lifecycle-audit-purge-form';
$listPurgeAction = 'admin/user-lifecycle-audit/purge';
$listPurgeAction = 'audit/user-lifecycle-audit/purge';
$listPurgeConfirmMessage = t('Purge entries older than 365 days?');
$listPurgeButtonLabel = t('Purge user lifecycle logs');
require templatePath('partials/app-list-purge-action.phtml');

View File

@@ -9,19 +9,19 @@ Guard::requireLogin();
Guard::requireAbility(\MintyPHP\Service\Access\SettingsAuthorizationPolicy::ABILITY_ADMIN_SETTINGS_UPDATE);
if (strtoupper((string) (requestInput()->method())) !== 'POST') {
Router::redirect('admin/user-lifecycle-audit');
Router::redirect('audit/user-lifecycle-audit');
}
$errorBag = formErrors();
if (!Session::checkCsrfToken()) {
$errorBag->addGlobal(t('Form expired, please try again'));
flashFormErrors($errorBag, 'admin/user-lifecycle-audit', 'user_lifecycle_audit');
Router::redirect('admin/user-lifecycle-audit');
flashFormErrors($errorBag, 'audit/user-lifecycle-audit', 'user_lifecycle_audit');
Router::redirect('audit/user-lifecycle-audit');
}
$deleted = app(\MintyPHP\Module\Audit\Service\UserLifecycleAuditService::class)->purgeExpired();
Flash::success(
sprintf(t('%d user lifecycle audit entries purged'), $deleted),
'admin/user-lifecycle-audit',
'audit/user-lifecycle-audit',
'user_lifecycle_audit_purged'
);
Router::redirect('admin/user-lifecycle-audit');
Router::redirect('audit/user-lifecycle-audit');

View File

@@ -14,12 +14,12 @@ $auditId = (int) ($id ?? 0);
$errorBag = formErrors();
if (strtoupper((string) (requestInput()->method())) !== 'POST') {
Router::redirect('admin/user-lifecycle-audit');
Router::redirect('audit/user-lifecycle-audit');
}
if (!Session::checkCsrfToken()) {
$errorBag->addGlobal(t('Form expired, please try again'));
flashFormErrors($errorBag, 'admin/user-lifecycle-audit', 'user_lifecycle_restore');
Router::redirect('admin/user-lifecycle-audit');
flashFormErrors($errorBag, 'audit/user-lifecycle-audit', 'user_lifecycle_restore');
Router::redirect('audit/user-lifecycle-audit');
}
$result = app(\MintyPHP\Service\User\UserLifecycleRestoreService::class)->restoreFromLifecycleAudit(
@@ -40,9 +40,9 @@ if (!($result['ok'] ?? false)) {
} else {
$errorBag->addGlobal(t('User restore failed'));
}
flashFormErrors($errorBag, "admin/user-lifecycle-audit/view/$auditId", 'user_lifecycle_restore');
Router::redirect("admin/user-lifecycle-audit/view/$auditId");
flashFormErrors($errorBag, "audit/user-lifecycle-audit/view/$auditId", 'user_lifecycle_restore');
Router::redirect("audit/user-lifecycle-audit/view/$auditId");
}
Flash::success(t('User restored'), "admin/user-lifecycle-audit/view/$auditId", 'user_restored');
Router::redirect("admin/user-lifecycle-audit/view/$auditId");
Flash::success(t('User restored'), "audit/user-lifecycle-audit/view/$auditId", 'user_restored');
Router::redirect("audit/user-lifecycle-audit/view/$auditId");

View File

@@ -17,8 +17,8 @@ $auditId = (int) ($id ?? 0);
$auditService = app(\MintyPHP\Module\Audit\Service\UserLifecycleAuditService::class);
$auditLog = $auditId > 0 ? $auditService->find($auditId) : null;
if (!$auditLog) {
Flash::error(t('Lifecycle audit entry not found'), 'admin/user-lifecycle-audit', 'user_lifecycle_audit_not_found');
Router::redirect('admin/user-lifecycle-audit');
Flash::error(t('Lifecycle audit entry not found'), 'audit/user-lifecycle-audit', 'user_lifecycle_audit_not_found');
Router::redirect('audit/user-lifecycle-audit');
}
$snapshot = null;

View File

@@ -1,7 +1,7 @@
<?php
use MintyPHP\Domain\Taxonomy\UserLifecycleAction;
use MintyPHP\Domain\Taxonomy\UserLifecycleStatus;
use MintyPHP\Domain\Taxonomy\UserLifecycleTriggerType;
use MintyPHP\Module\Audit\Domain\UserLifecycleAction;
use MintyPHP\Module\Audit\Domain\UserLifecycleStatus;
use MintyPHP\Module\Audit\Domain\UserLifecycleTriggerType;
/**
* @var array $auditLog
@@ -31,14 +31,14 @@ $isRestorable = $canRestore
<?php
$breadcrumbs = [
['label' => t('Home'), 'path' => 'admin'],
['label' => t('User lifecycle logs'), 'path' => 'admin/user-lifecycle-audit'],
['label' => t('User lifecycle logs'), 'path' => 'audit/user-lifecycle-audit'],
['label' => t('View')],
];
require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => t('View user lifecycle audit entry'),
'backHref' => 'admin/user-lifecycle-audit',
'backHref' => 'audit/user-lifecycle-audit',
'backTitle' => t('Back'),
];
require templatePath('partials/app-details-titlebar.phtml');
@@ -178,7 +178,7 @@ $isRestorable = $canRestore
</div>
<?php if ($isRestorable): ?>
<hr>
<form method="post" action="admin/user-lifecycle-audit/restore/<?php e((string) ($auditLog['id'] ?? 0)); ?>">
<form method="post" action="audit/user-lifecycle-audit/restore/<?php e((string) ($auditLog['id'] ?? 0)); ?>">
<?php Session::getCsrfInput(); ?>
<button type="submit" class="warning" data-confirm-message="<?php e(t('Restore this user from lifecycle snapshot?')); ?>">
<?php e(t('Restore user')); ?>

View File

@@ -15,7 +15,7 @@ if (config) {
const gridOptions = {
gridjs: window.gridjs,
container: '#api-audit-grid',
dataUrl: 'admin/api-audit/data',
dataUrl: 'audit/api-audit/data',
appBase,
columns: [
{
@@ -124,7 +124,7 @@ if (config) {
rowDblClick: {
getUrl: (rowData) => {
const id = rowData?.cells?.[9]?.data;
return id ? new URL(`admin/api-audit/view/${id}`, appBase).toString() : '';
return id ? new URL(`audit/api-audit/view/${id}`, appBase).toString() : '';
},
},
};

View File

@@ -21,7 +21,7 @@ if (config) {
const gridOptions = {
gridjs: window.gridjs,
container: '#import-audit-grid',
dataUrl: 'admin/import-audit/data',
dataUrl: 'audit/import-audit/data',
appBase,
columns: [
{ name: labels.created || 'Created', sort: true },
@@ -84,7 +84,7 @@ if (config) {
rowDblClick: {
getUrl: (rowData) => {
const id = rowData?.cells?.[9]?.data;
return id ? new URL(`admin/import-audit/view/${id}`, appBase).toString() : '';
return id ? new URL(`audit/import-audit/view/${id}`, appBase).toString() : '';
},
},
};

View File

@@ -15,7 +15,7 @@ if (config) {
const gridOptions = {
gridjs: window.gridjs,
container: '#system-audit-grid',
dataUrl: 'admin/system-audit/data',
dataUrl: 'audit/system-audit/data',
appBase,
columns: [
{ name: labels.created || 'Created', sort: true },
@@ -85,7 +85,7 @@ if (config) {
rowDblClick: {
getUrl: (rowData) => {
const id = rowData?.cells?.[8]?.data;
return id ? new URL(`admin/system-audit/view/${id}`, appBase).toString() : '';
return id ? new URL(`audit/system-audit/view/${id}`, appBase).toString() : '';
},
},
};

View File

@@ -14,7 +14,7 @@ if (config) {
const gridOptions = {
gridjs: window.gridjs,
container: '#user-lifecycle-audit-grid',
dataUrl: 'admin/user-lifecycle-audit/data',
dataUrl: 'audit/user-lifecycle-audit/data',
appBase,
columns: [
{ name: labels.created || 'Created', sort: true },
@@ -57,7 +57,7 @@ if (config) {
rowDblClick: {
getUrl: (rowData) => {
const id = rowData?.cells?.[8]?.data;
return id ? new URL(`admin/user-lifecycle-audit/view/${id}`, appBase).toString() : '';
return id ? new URL(`audit/user-lifecycle-audit/view/${id}`, appBase).toString() : '';
},
},
};