Przeglądaj źródła

Add missing ip matcher endpoint hit when opening project dashboard react (#12015)

* Add missing ip matcher endpoint hit when opening project dashboard react

* Add error logger on the catch block

GitOrigin-RevId: 0f69de329b1290a4f0f98ef00dda050fb09d5a08
M Fahru 3 lat temu
rodzic
commit
f1304fa205

+ 3 - 0
services/web/app/src/Features/Notifications/NotificationsBuilder.js

@@ -245,6 +245,9 @@ NotificationsBuilder.promises = {
   dropboxDuplicateProjectNames(userId) {
     return promisifyAll(dropboxDuplicateProjectNames(userId))
   },
+  ipMatcherAffiliation: function (userId) {
+    return promisifyAll(ipMatcherAffiliation(userId))
+  },
 }
 
 module.exports = NotificationsBuilder

+ 14 - 0
services/web/app/src/Features/Project/ProjectListController.js

@@ -20,6 +20,7 @@ const { User } = require('../../models/User')
 const UserPrimaryEmailCheckHandler = require('../User/UserPrimaryEmailCheckHandler')
 const UserController = require('../User/UserController')
 const LimitationsManager = require('../Subscription/LimitationsManager')
+const NotificationsBuilder = require('../Notifications/NotificationsBuilder')
 
 /** @typedef {import("./types").GetProjectsRequest} GetProjectsRequest */
 /** @typedef {import("./types").GetProjectsResponse} GetProjectsResponse */
@@ -283,6 +284,19 @@ async function projectListReactPage(req, res, next) {
     )
   }
 
+  // in v2 add notifications for matching university IPs
+  if (Settings.overleaf != null && req.ip !== user.lastLoginIp) {
+    NotificationsBuilder.promises
+      .ipMatcherAffiliation(user._id)
+      .create(req.ip)
+      .catch(err => {
+        logger.error(
+          { err },
+          'failed to create institutional IP match notification'
+        )
+      })
+  }
+
   const hasPaidAffiliation = userAffiliations.some(
     affiliation => affiliation.licence && affiliation.licence !== 'free'
   )