Admins can now surface dismissed alert types without waiting for the underlying data to change. Adds a collapsible "Restore dismissed" section below the active alerts with per-type checkboxes. - ALERT_METADATA map in adminAlerts.js as the single source of truth for slug → title/severity; detectors refactored to reference it - GET /api/admin/alerts/dismissed returns this admin's dismissals joined with metadata (title, severity, dismissedAt) - POST /api/admin/alerts/restore deletes dismissals by alertType[], returns the deleted count - AdminAlertsPanel fetches both active + dismissed; stays visible when either is non-empty; checkboxes + "Restore selected" button - adminAlertRestoreSchema validates the POST body against the enum - Auth guards test covers both new routes
15 lines
514 B
JavaScript
15 lines
514 B
JavaScript
import AdminAlertDismissal from '../../../models/adminAlertDismissal.js'
|
|
import { connectDB } from '../../../utils/mongoose.js'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const admin = await requireAdmin(event)
|
|
const { alertTypes } = await validateBody(event, adminAlertRestoreSchema)
|
|
await connectDB()
|
|
|
|
const result = await AdminAlertDismissal.deleteMany({
|
|
adminId: admin._id.toString(),
|
|
alertType: { $in: alertTypes }
|
|
})
|
|
|
|
return { ok: true, restored: result.deletedCount ?? 0 }
|
|
})
|