| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- AuthenticationController = require('../Authentication/AuthenticationController')
- UserGetter = require("./UserGetter")
- UserUpdater = require("./UserUpdater")
- EmailHelper = require("../Helpers/EmailHelper")
- UserEmailsConfirmationHandler = require "./UserEmailsConfirmationHandler"
- { endorseAffiliation } = require("./UserAffiliationsManager")
- logger = require("logger-sharelatex")
- Errors = require "../Errors/Errors"
- module.exports = UserEmailsController =
- list: (req, res, next) ->
- userId = AuthenticationController.getLoggedInUserId(req)
- UserGetter.getUserFullEmails userId, (error, fullEmails) ->
- return next(error) if error?
- res.json fullEmails
- add: (req, res, next) ->
- userId = AuthenticationController.getLoggedInUserId(req)
- email = EmailHelper.parseEmail(req.body.email)
- return res.sendStatus 422 unless email?
- affiliationOptions =
- university: req.body.university
- role: req.body.role
- department: req.body.department
- UserUpdater.addEmailAddress userId, email, affiliationOptions, (error)->
- return next(error) if error?
- UserEmailsConfirmationHandler.sendConfirmationEmail userId, email, (err) ->
- return next(error) if error?
- res.sendStatus 204
- remove: (req, res, next) ->
- userId = AuthenticationController.getLoggedInUserId(req)
- email = EmailHelper.parseEmail(req.body.email)
- return res.sendStatus 422 unless email?
- UserUpdater.removeEmailAddress userId, email, (error)->
- return next(error) if error?
- res.sendStatus 200
- setDefault: (req, res, next) ->
- userId = AuthenticationController.getLoggedInUserId(req)
- email = EmailHelper.parseEmail(req.body.email)
- return res.sendStatus 422 unless email?
- UserUpdater.setDefaultEmailAddress userId, email, (error)->
- return next(error) if error?
- res.sendStatus 200
- endorse: (req, res, next) ->
- userId = AuthenticationController.getLoggedInUserId(req)
- email = EmailHelper.parseEmail(req.body.email)
- return res.sendStatus 422 unless email?
- endorseAffiliation userId, email, req.body.role, req.body.department, (error)->
- return next(error) if error?
- res.sendStatus 204
- resendConfirmation: (req, res, next) ->
- userId = AuthenticationController.getLoggedInUserId(req)
- email = EmailHelper.parseEmail(req.body.email)
- return res.sendStatus 422 unless email?
- UserGetter.getUserByAnyEmail email, {_id:1}, (error, user) ->
- return next(error) if error?
- if !user? or user?._id?.toString() != userId
- logger.log {userId, email, foundUserId: user?._id}, "email doesn't match logged in user"
- return res.sendStatus 422
- logger.log {userId, email}, 'resending email confirmation token'
- UserEmailsConfirmationHandler.sendConfirmationEmail userId, email, (error) ->
- return next(error) if error?
- res.sendStatus 200
- showConfirm: (req, res, next) ->
- res.render 'user/confirm_email', {
- token: req.query.token,
- title: 'confirm_email'
- }
- confirm: (req, res, next) ->
- token = req.body.token
- if !token?
- return res.sendStatus 422
- UserEmailsConfirmationHandler.confirmEmailFromToken token, (error) ->
- if error?
- if error instanceof Errors.NotFoundError
- res.status(404).json({
- message: 'Sorry, your confirmation token is invalid or has expired. Please request a new email confirmation link.'
- })
- else
- next(error)
- else
- res.sendStatus 200
|