let InstitutionsFeatures const UserGetter = require('../User/UserGetter') const PlansLocator = require('../Subscription/PlansLocator') const Settings = require('@overleaf/settings') const { promisifyAll } = require('../../util/promises') module.exports = InstitutionsFeatures = { getInstitutionsFeatures(userId, callback) { InstitutionsFeatures.getInstitutionsPlan( userId, function (error, planCode) { if (error) { return callback(error) } const plan = planCode && PlansLocator.findLocalPlanInSettings(planCode) const features = plan && plan.features callback(null, features || {}) } ) }, getInstitutionsPlan(userId, callback) { InstitutionsFeatures.hasLicence(userId, function (error, hasLicence) { if (error) { return callback(error) } if (!hasLicence) { return callback(null, null) } callback(null, Settings.institutionPlanCode) }) }, hasLicence(userId, callback) { UserGetter.getUserFullEmails(userId, function (error, emailsData) { if (error) { return callback(error) } const hasLicence = emailsData.some( emailData => emailData.emailHasInstitutionLicence ) callback(null, hasLicence) }) }, } module.exports.promises = promisifyAll(module.exports)