Kaynağa Gözat

Log error on web service start when hashedEmailSalt not set

GitOrigin-RevId: 67473de85d869b56aa1321391b03ddcceb95346b
Andrew Rumble 11 ay önce
ebeveyn
işleme
42f3bd208b

+ 10 - 3
services/web/app/src/Features/Analytics/AnalyticsManager.js

@@ -9,6 +9,15 @@ const { expressify } = require('@overleaf/promise-utils')
 const logger = require('@overleaf/logger')
 const logger = require('@overleaf/logger')
 const { createHash } = require('crypto')
 const { createHash } = require('crypto')
 
 
+if (
+  Settings.analytics?.enabled &&
+  process.env.NODE_ENV !== 'test' &&
+  !Settings.analytics?.hashedEmailSalt
+) {
+  // This isn't important enough to crash the app, but we want to record the error
+  logger.error({}, 'Settings.analytics.hashedEmailSalt should be set')
+}
+
 const analyticsEventsQueue = Queues.getQueue('analytics-events')
 const analyticsEventsQueue = Queues.getQueue('analytics-events')
 const analyticsEditingSessionsQueue = Queues.getQueue(
 const analyticsEditingSessionsQueue = Queues.getQueue(
   'analytics-editing-sessions'
   'analytics-editing-sessions'
@@ -218,10 +227,8 @@ function registerEmailChange({
 }) {
 }) {
   Metrics.analyticsQueue.inc({ status: 'adding', event_type: 'email-change' })
   Metrics.analyticsQueue.inc({ status: 'adding', event_type: 'email-change' })
 
 
-  const salt = Settings.analytics?.hashedEmailSalt ?? ''
-
   const hashedEmail = createHash('sha256')
   const hashedEmail = createHash('sha256')
-    .update(`${email}${salt}`)
+    .update(`${email}${Settings.analytics?.hashedEmailSalt}`)
     .digest('hex')
     .digest('hex')
 
 
   analyticsEmailChangeQueue
   analyticsEmailChangeQueue

+ 1 - 0
services/web/test/acceptance/config/settings.test.saas.js

@@ -88,6 +88,7 @@ const overrides = {
 
 
   analytics: {
   analytics: {
     enabled: true,
     enabled: true,
+    hashedEmailSalt: 'acceptance-test-salt',
   },
   },
 }
 }
 
 

+ 3 - 1
services/web/test/unit/src/Analytics/AnalyticsManagerTests.js

@@ -339,7 +339,9 @@ describe('AnalyticsManager', function () {
       this.analyticsId = 'bccd308c-5d72-426e-a106-662e88557795'
       this.analyticsId = 'bccd308c-5d72-426e-a106-662e88557795'
       this.AnalyticsManager = SandboxedModule.require(MODULE_PATH, {
       this.AnalyticsManager = SandboxedModule.require(MODULE_PATH, {
         requires: {
         requires: {
-          '@overleaf/settings': {},
+          '@overleaf/settings': {
+            analytics: { hashedEmailSalt: 'test-salt' },
+          },
           '../../infrastructure/Queues': {
           '../../infrastructure/Queues': {
             getQueue: queueName => {
             getQueue: queueName => {
               switch (queueName) {
               switch (queueName) {