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

Merge pull request #3773 from overleaf/revert-3718-jel-emailHasLicence

Revert "Update emailHasLicence for reconfirmation and SAML"

GitOrigin-RevId: 637b85d10fc0c79e8d55e51b43952e956d73baa6
Thomas пре 5 година
родитељ
комит
001f7f0cc2

+ 0 - 4
services/web/app/src/Features/Institutions/InstitutionsHelper.js

@@ -16,10 +16,6 @@ function emailHasLicence(emailData) {
   if (!affiliation.licence) {
     return false
   }
-  if (affiliation.pastReconfirmDate) {
-    return false
-  }
-
   return affiliation.licence !== 'free'
 }
 

+ 30 - 0
services/web/app/src/Features/Subscription/FeaturesUpdater.js

@@ -63,6 +63,9 @@ const FeaturesUpdater = {
       bonusFeatures(cb) {
         ReferalFeatures.getBonusFeatures(userId, cb)
       },
+      samlFeatures(cb) {
+        FeaturesUpdater._getSamlFeatures(userId, cb)
+      },
       featuresOverrides(cb) {
         FeaturesUpdater._getFeaturesOverrides(userId, cb)
       }
@@ -85,6 +88,7 @@ const FeaturesUpdater = {
         institutionFeatures,
         v1Features,
         bonusFeatures,
+        samlFeatures,
         featuresOverrides
       } = results
       logger.log(
@@ -95,6 +99,7 @@ const FeaturesUpdater = {
           institutionFeatures,
           v1Features,
           bonusFeatures,
+          samlFeatures,
           featuresOverrides
         },
         'merging user features'
@@ -104,6 +109,7 @@ const FeaturesUpdater = {
         institutionFeatures,
         v1Features,
         bonusFeatures,
+        samlFeatures,
         featuresOverrides
       ])
       const features = _.reduce(
@@ -127,6 +133,30 @@ const FeaturesUpdater = {
     )
   },
 
+  _getSamlFeatures(userId, callback) {
+    UserGetter.getUser(userId, (err, user) => {
+      if (err) {
+        return callback(err)
+      }
+      if (
+        !user ||
+        !Array.isArray(user.samlIdentifiers) ||
+        !user.samlIdentifiers.length
+      ) {
+        return callback(null, {})
+      }
+      for (const samlIdentifier of user.samlIdentifiers) {
+        if (samlIdentifier && samlIdentifier.hasEntitlement) {
+          return callback(
+            null,
+            FeaturesUpdater._planCodeToFeatures('professional')
+          )
+        }
+      }
+      callback(null, {})
+    })
+  },
+
   _getFeaturesOverrides(userId, callback) {
     UserGetter.getUser(userId, { featuresOverrides: 1 }, (error, user) => {
       if (error) {

+ 19 - 33
services/web/test/acceptance/src/UserEmailsTests.js

@@ -1025,12 +1025,11 @@ describe('UserEmails', function() {
         password: userHelper.getDefaultPassword()
       })
       const institutionId = MockV1Api.createInstitution({
-        commonsAccount: true,
         ssoEnabled: false,
         maxConfirmationMonths
       })
       const domain = 'example-affiliation.com'
-      MockV1Api.addInstitutionDomain(institutionId, domain, { confirmed: true })
+      MockV1Api.addInstitutionDomain(institutionId, domain)
 
       email1 = `leonard@${domain}`
       email2 = `mccoy@${domain}`
@@ -1054,37 +1053,24 @@ describe('UserEmails', function() {
         )
       })
 
-      describe('when all affiliations in notification period or past reconfirm date', function() {
-        it('should flag inReconfirmNotificationPeriod for all affiliations in period', async function() {
-          const response = await userHelper.request.get('/user/emails')
-          expect(response.statusCode).to.equal(200)
-          const fullEmails = JSON.parse(response.body)
-          expect(fullEmails.length).to.equal(4)
-          expect(fullEmails[0].affiliation).to.not.exist
-          expect(
-            fullEmails[1].affiliation.inReconfirmNotificationPeriod
-          ).to.equal(true)
-          expect(
-            fullEmails[2].affiliation.inReconfirmNotificationPeriod
-          ).to.equal(true)
-          expect(
-            fullEmails[3].affiliation.inReconfirmNotificationPeriod
-          ).to.equal(true)
-        })
-
-        it('should set pastReconfirmDate and emailHasInstitutionLicence:false for lapsed confirmations', async function() {
-          const response = await userHelper.request.get('/user/emails')
-          expect(response.statusCode).to.equal(200)
-          const fullEmails = JSON.parse(response.body)
-          expect(fullEmails.length).to.equal(4)
-          expect(fullEmails[0].affiliation).to.not.exist
-          expect(fullEmails[1].affiliation.pastReconfirmDate).to.equal(false)
-          expect(fullEmails[1].emailHasInstitutionLicence).to.equal(true)
-          expect(fullEmails[2].affiliation.pastReconfirmDate).to.equal(false)
-          expect(fullEmails[2].emailHasInstitutionLicence).to.equal(true)
-          expect(fullEmails[3].affiliation.pastReconfirmDate).to.equal(true)
-          expect(fullEmails[3].emailHasInstitutionLicence).to.equal(false)
-        })
+      it('should flag inReconfirmNotificationPeriod for all affiliations in period', async function() {
+        const response = await userHelper.request.get('/user/emails')
+        expect(response.statusCode).to.equal(200)
+        const fullEmails = JSON.parse(response.body)
+        expect(fullEmails.length).to.equal(4)
+        expect(fullEmails[0].affiliation).to.not.exist
+        expect(
+          fullEmails[1].affiliation.inReconfirmNotificationPeriod
+        ).to.equal(true)
+        expect(fullEmails[1].affiliation.pastReconfirmDate).to.equal(false)
+        expect(
+          fullEmails[2].affiliation.inReconfirmNotificationPeriod
+        ).to.equal(true)
+        expect(fullEmails[2].affiliation.pastReconfirmDate).to.equal(false)
+        expect(
+          fullEmails[3].affiliation.inReconfirmNotificationPeriod
+        ).to.equal(true)
+        expect(fullEmails[3].affiliation.pastReconfirmDate).to.equal(true)
       })
 
       describe('should flag emails before their confirmation expires, but within the notification period', function() {

+ 1 - 7
services/web/test/acceptance/src/mocks/MockV1Api.js

@@ -212,13 +212,7 @@ class MockV1Api extends AbstractMockApi {
 
           affiliation.institution.confirmed = !!domainData.confirmed
 
-          affiliation.licence = 'free'
-          if (
-            institutionData.commonsAccount &&
-            (!institutionData.sso_enabled ||
-              (institutionData.sso_enabled &&
-                affiliation.cached_entitlement === true))
-          ) {
+          if (institutionData.commonsAccount) {
             affiliation.licence = 'pro_plus'
           }
           return affiliation