Преглед изворни кода

[web] Track if the email is confirmed/verified (#15818)

* Added email-verifed event

* added email provider

* check if the email is primary

* rename confirm email segmentation

* remove the segmentation because it duplicates verification-type

* move the response

* remove duplicate definition

---------

Co-authored-by: Domagoj Kriskovic <dom.kriskovic@overleaf.com>
GitOrigin-RevId: 2956467b46a883fc0ee00c26dd446ba82fa5be26
Rebeka Dekany пре 2 година
родитељ
комит
fbf02b4856

+ 23 - 1
services/web/app/src/Features/User/UserEmailsController.js

@@ -295,7 +295,29 @@ const UserEmailsController = {
                   'failed to add audit log entry'
                   'failed to add audit log entry'
                 )
                 )
               }
               }
-              res.sendStatus(200)
+              UserGetter.getUser(
+                userData.userId,
+                { email: 1 },
+                function (error, user) {
+                  if (error) {
+                    logger.error(
+                      { error, userId: userData.userId },
+                      'failed to get user'
+                    )
+                  }
+                  const isPrimary = user?.email === userData.email
+                  AnalyticsManager.recordEventForUser(
+                    userData.userId,
+                    'email-verified',
+                    {
+                      provider: 'email',
+                      verification_type: 'link',
+                      isPrimary,
+                    }
+                  )
+                  res.sendStatus(200)
+                }
+              )
             }
             }
           )
           )
         }
         }

+ 1 - 0
services/web/test/unit/src/User/UserEmailsControllerTests.js

@@ -21,6 +21,7 @@ describe('UserEmailsController', function () {
     }
     }
 
 
     this.UserGetter = {
     this.UserGetter = {
+      getUser: sinon.stub().yields(),
       getUserFullEmails: sinon.stub(),
       getUserFullEmails: sinon.stub(),
       getUserByAnyEmail: sinon.stub(),
       getUserByAnyEmail: sinon.stub(),
       promises: {
       promises: {