| 12345678910111213141516171819202122232425262728293031323334353637 |
- logger = require("logger-sharelatex")
- UserGetter = require("../User/UserGetter")
- { addAffiliation } = require("../Institutions/InstitutionsAPI")
- Institution = require('../../models/Institution').Institution
- async = require('async')
- module.exports = InstitutionsController =
- confirmDomain: (req, res, next) ->
- hostname = req.body.hostname
- institutionId = req.body.institution_id
- createInstitution institutionId, (error) ->
- return next(error) if error?
- affiliateUsers hostname, (error) ->
- return next(error) if error?
- res.sendStatus 200
- createInstitution = (institutionId, callback = (error)->) ->
- data = v1Id: institutionId
- Institution.findOneAndUpdate data, data, { upsert: true }, callback
- affiliateUsers = (hostname, callback = (error)->) ->
- reversedHostname = hostname.trim().split('').reverse().join('')
- UserGetter.getUsersByHostname hostname, {_id:1, emails:1}, (error, users) ->
- if error?
- logger.err error: error, 'problem fetching users by hostname'
- return callback(error)
- async.map users, ((user) ->
- matchingEmails = user.emails.filter (email) -> email.reversedHostname == reversedHostname
- for email in matchingEmails
- addAffiliation user._id, email.email, {confirmedAt: email.confirmedAt}, (error) =>
- if error?
- logger.err error: error, 'problem adding affiliation while confirming hostname'
- return callback(error)
- ), (error) ->
- if error?
- return callback(error)
- callback()
|