diff --git a/server/socket-handlers/status-page-socket-handler.js b/server/socket-handlers/status-page-socket-handler.js index 5d1035d1..9c6bd052 100644 --- a/server/socket-handlers/status-page-socket-handler.js +++ b/server/socket-handlers/status-page-socket-handler.js @@ -338,6 +338,10 @@ module.exports.statusPageSocketHandler = (socket) => { statusPage.modified_date = R.isoDateTime(); statusPage.analytics_id = config.analyticsId; statusPage.analytics_script_url = config.analyticsScriptUrl; + const validAnalyticsTypes = ["google", "umami", "plausible", "matomo"]; + if (config.analyticsType !== null && !validAnalyticsTypes.includes(config.analyticsType)) { + throw new Error("Invalid analytics type"); + } statusPage.analytics_type = config.analyticsType; await R.store(statusPage); diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index defc980b..4003b4a0 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -156,7 +156,7 @@ class="form-select" data-testid="analytics-type-select" > - + @@ -688,7 +688,9 @@ export default { enableEditMode: false, enableEditIncidentMode: false, hasToken: false, - config: {}, + config: { + analyticsType: null, + }, selectedMonitor: null, incident: null, previousIncident: null,