refactor(settings): split security into 4 focused tiles

Extracts user-lifecycle, audit and telemetry from the security subpage
into their own tiles, and renames the slimmed-down security subpage to
account-access for a clearer scope. Each subpage now has at most three
detail cards instead of the eight previously crowded into security.

Hub gains four tiles, sub-action redirects (expire-remember-tokens,
run-user-lifecycle) move to their new sections, architecture tests track
the new section list and i18n adds the new labels in de + en.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-25 08:50:05 +02:00
parent dd5c305f7e
commit c14d42f198
18 changed files with 846 additions and 376 deletions

View File

@@ -18,11 +18,11 @@ if (!$decision->isAllowed()) {
Guard::deny();
}
if (!actionRequirePost('admin/settings/security')) {
if (!actionRequirePost('admin/settings/user-lifecycle')) {
return;
}
if (!actionRequireCsrf('admin/settings/security', 'admin/settings/security', 'user_lifecycle_run')) {
if (!actionRequireCsrf('admin/settings/user-lifecycle', 'admin/settings/user-lifecycle', 'user_lifecycle_run')) {
return;
}
@@ -35,8 +35,8 @@ if (!($result['ok'] ?? false)) {
} else {
$errorBag->addGlobal('User lifecycle failed');
}
flashFormErrors($errorBag, 'admin/settings/security', 'user_lifecycle_run');
Router::redirect('admin/settings/security');
flashFormErrors($errorBag, 'admin/settings/user-lifecycle', 'user_lifecycle_run');
Router::redirect('admin/settings/user-lifecycle');
}
Flash::success(
@@ -45,7 +45,7 @@ Flash::success(
(int) ($result['deactivated_count'] ?? 0),
(int) ($result['deleted_count'] ?? 0)
),
'admin/settings/security',
'admin/settings/user-lifecycle',
'user_lifecycle_completed'
);
Router::redirect('admin/settings/security');
Router::redirect('admin/settings/user-lifecycle');