Merge pull request #2606 from overleaf/ta-check-sso-users

Add SSO Users Info on Users Features Check Summary

GitOrigin-RevId: 5c874e1bf50005eb311317b867b17380ca017118
This commit is contained in:
Timothée Alby
2020-02-15 04:17:53 +00:00
committed by Copybot
parent 69a98355ce
commit cd9a9b43bd
2 changed files with 57 additions and 15 deletions
@@ -21,6 +21,7 @@ const { ObjectId } = require('../../infrastructure/mongojs')
const { getInstitutionAffiliations } = require('./InstitutionsAPI')
const FeaturesUpdater = require('../Subscription/FeaturesUpdater')
const UserGetter = require('../User/UserGetter')
const SAMLIdentityManager = require('../User/SAMLIdentityManager')
const NotificationsBuilder = require('../Notifications/NotificationsBuilder')
const SubscriptionLocator = require('../Subscription/SubscriptionLocator')
const { Institution } = require('../../models/Institution')
@@ -60,8 +61,8 @@ module.exports = InstitutionsManager = {
return getInstitutionAffiliations(institutionId, (error, affiliations) =>
UserGetter.getUsersByAnyConfirmedEmail(
affiliations.map(affiliation => affiliation.email),
{ features: 1 },
(error, users) => callback(error, checkFeatures(users))
{ features: 1, samlIdentifiers: 1 },
(error, users) => callback(error, checkFeatures(institutionId, users))
)
)
},
@@ -170,19 +171,45 @@ var notifyUser = (user, affiliation, subscription, featuresChanged, callback) =>
callback
)
var checkFeatures = function(users) {
var checkFeatures = function(institutionId, users) {
const usersSummary = {
totalConfirmedUsers: users.length,
totalConfirmedProUsers: 0,
totalConfirmedNonProUsers: 0,
confirmedNonProUsers: []
confirmedEmailUsers: {
total: users.length, // all users are confirmed email users
totalProUsers: 0,
totalNonProUsers: 0,
nonProUsers: []
},
entitledSSOUsers: {
total: 0,
totalProUsers: 0,
totalNonProUsers: 0,
nonProUsers: []
}
}
users.forEach(function(user) {
let isSSOEntitled = SAMLIdentityManager.userHasEntitlement(
user,
institutionId
)
if (isSSOEntitled) {
usersSummary.entitledSSOUsers.total += 1
}
if (user.features.collaborators === -1 && user.features.trackChanges) {
return (usersSummary.totalConfirmedProUsers += 1)
// user is on Pro
usersSummary.confirmedEmailUsers.totalProUsers += 1
if (isSSOEntitled) {
usersSummary.entitledSSOUsers.totalProUsers += 1
}
} else {
usersSummary.totalConfirmedNonProUsers += 1
return usersSummary.confirmedNonProUsers.push(user._id)
// user is not on Pro
usersSummary.confirmedEmailUsers.totalNonProUsers += 1
usersSummary.confirmedEmailUsers.nonProUsers.push(user._id)
if (isSSOEntitled) {
usersSummary.entitledSSOUsers.totalNonProUsers += 1
usersSummary.entitledSSOUsers.nonProUsers.push(user._id)
}
}
})
return usersSummary