diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee index e33b73ff90..675399c898 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee @@ -1,11 +1,36 @@ +ProjectGetter = require "../Project/ProjectGetter" +LimitationsManager = require "../Subscription/LimitationsManager" +UserGetter = require "../User/UserGetter" CollaboratorsInviteHandler = require('./CollaboratorsInviteHandler') +mimelib = require("mimelib") +logger = require('logger-sharelatex') module.exports = CollaboratorsInviteController = - inviteToProject: (req, res) -> + inviteToProject: (req, res, next) -> + projectId = req.params.Project_id + email = req.body.email + sendingUserId = req.session?.user_id + logger.log {projectId, email, sendingUserId}, "inviting to project" + LimitationsManager.canAddXCollaborators project_id, 1, (error, allowed) => + return next(error) if error? + if !allowed + logger.log {projectId, email, sendingUserId}, "not allowed to invite any more users to this project" + return res.json {} + {email, privileges} = req.body + email = mimelib.parseAddresses(email or "")[0]?.address?.toLowerCase() + if !email? or email == "" + logger.log {projectId, email, sendingUserId}, "invalid email address" + return res.status(400).send("invalid email address") + CollaboratorsInviteHandler.inviteToProject projectId, sendingUserId, email, priveleges, (err, invite) -> + if err? + logger.err {projectId, email, sendingUserId}, "error creating project invite" + return next(err) + logger.log {projectId, email, sendingUserId}, "invite created" + return res.json {inviteId: invite._id} - revokeInvite: (req, res) -> + revokeInvite: (req, res, next) -> - viewInvite: (req, res) -> + viewInvite: (req, res, next) -> - acceptInvite: (req, res) -> + acceptInvite: (req, res, next) ->