Skip to content

Commit 4b418b0

Browse files
committed
Explain permanent-delete auditing in Recovery.
1 parent bfeb839 commit 4b418b0

3 files changed

Lines changed: 10 additions & 1 deletion

File tree

client/components/settings/adminProblems.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,7 @@ const REPORT_TABLES = {
712712
},
713713
'report-recovery': {
714714
descKey: 'recovery-report-desc',
715+
additionalDesc: 'Recovery also logs permanent-delete setting changes and every successful, failed, or unauthorized permanent-delete attempt, including Done status, user ID, username, trusted IPv4 or IPv6 address, and attempted board IDs and titles.',
715716
emptyKey: 'recovery-no-events',
716717
docs: () => collectionResults(RecoveryEvents, { createdAt: -1 }).fetch(),
717718
rowClass: d => `recovery-severity-${d.severity || 'info'}`,
@@ -759,6 +760,7 @@ function reportTablePageData(tmpl) {
759760
// Admin Panel pane (docs/Features/Page/Left-Menu.md) - and this report's menu
760761
// entry carries the very same i18n key, so both would have printed it.
761762
descKey: spec.descKey,
763+
additionalDesc: spec.additionalDesc,
762764
emptyKey: spec.emptyKey,
763765
searchTerm: cfg.search.get(),
764766
filters: reportId === 'report-recovery' ? buildFilters([{

client/components/settings/tablePage.jade

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//- each report, which is how the reports had drifted apart.
77
//-
88
//- Data context (see tablePage.js / models/lib/tablePage.js):
9-
//- title / titleKey, descKey, statusTemplate + statusData,
9+
//- title / titleKey, descKey, additionalDesc, statusTemplate + statusData,
1010
//- header[], rows[], rowCount, searchTerm, page, totalPages, hasPrev, hasNext,
1111
//- emptyKey
1212
template(name="tablePage")
@@ -25,6 +25,8 @@ template(name="tablePage")
2525
h1.table-page-title.admin-pane-title {{title}}
2626
if descKey
2727
p.quiet.table-page-desc {{_ descKey}}
28+
if additionalDesc
29+
p.quiet.table-page-desc {{additionalDesc}}
2830
if statusTemplate
2931
.table-page-status
3032
+Template.dynamic(template=statusTemplate data=statusData)

tests/recoveryReportWiring.test.cjs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ test('client report is wired: config, columns, menu, rendering', () => {
6868
assert.ok(!/titleKey: 'recoveryReportTitle'/.test(js),
6969
'and the table must not repeat it');
7070
assert.ok(/emptyKey: 'recovery-no-events'/.test(js), 'empty-state key');
71+
assert.ok(/additionalDesc: 'Recovery also logs permanent-delete setting changes[\s\S]*unauthorized permanent-delete attempt[\s\S]*board IDs and titles\.'/m.test(js),
72+
'a second description explains the permanent-delete audit fields');
7173
assert.ok(/rowClass: d => `recovery-severity-\$\{d\.severity \|\| 'info'\}`/.test(js),
7274
'severity row class');
7375
for (const status of ['all', 'done', 'failed', 'deleted']) {
@@ -80,6 +82,9 @@ test('client report is wired: config, columns, menu, rendering', () => {
8082
// The side menu is data now (docs/Features/Page/Left-Menu.md).
8183
assert.ok(/'report-recovery'/.test(js), 'menu entry');
8284
assert.ok(/\+tablePage\(tablePageData\)/.test(jade), 'rendered through the shared table page');
85+
const tablePage = read('client/components/settings/tablePage.jade');
86+
assert.ok(/if additionalDesc\s+p\.quiet\.table-page-desc \{\{additionalDesc\}\}/.test(tablePage),
87+
'the additional description renders below the current description');
8388
});
8489

8590
test('i18n keys exist', () => {

0 commit comments

Comments
 (0)