|
@@ -2,6 +2,7 @@ AuthenticationController = require('../Authentication/AuthenticationController')
|
|
|
UserMembershipHandler = require('./UserMembershipHandler')
|
|
UserMembershipHandler = require('./UserMembershipHandler')
|
|
|
EntityConfigs = require('./UserMembershipEntityConfigs')
|
|
EntityConfigs = require('./UserMembershipEntityConfigs')
|
|
|
Errors = require('../Errors/Errors')
|
|
Errors = require('../Errors/Errors')
|
|
|
|
|
+EmailHelper = require("../Helpers/EmailHelper")
|
|
|
logger = require("logger-sharelatex")
|
|
logger = require("logger-sharelatex")
|
|
|
|
|
|
|
|
module.exports =
|
|
module.exports =
|
|
@@ -18,13 +19,25 @@ module.exports =
|
|
|
|
|
|
|
|
add: (req, res, next)->
|
|
add: (req, res, next)->
|
|
|
{ entity, entityConfig } = req
|
|
{ entity, entityConfig } = req
|
|
|
- email = req.body.email
|
|
|
|
|
- return res.sendStatus 422 unless email
|
|
|
|
|
|
|
+ email = EmailHelper.parseEmail(req.body.email)
|
|
|
|
|
+ if !email?
|
|
|
|
|
+ return res.status(400).json error:
|
|
|
|
|
+ code: 'invalid_email'
|
|
|
|
|
+ message: req.i18n.translate('invalid_email')
|
|
|
|
|
+
|
|
|
|
|
|
|
|
if entityConfig.readOnly
|
|
if entityConfig.readOnly
|
|
|
return next(new Errors.NotFoundError("Cannot add users to entity"))
|
|
return next(new Errors.NotFoundError("Cannot add users to entity"))
|
|
|
|
|
|
|
|
UserMembershipHandler.addUser entity, entityConfig, email, (error, user)->
|
|
UserMembershipHandler.addUser entity, entityConfig, email, (error, user)->
|
|
|
|
|
+ if error?.alreadyAdded
|
|
|
|
|
+ return res.status(400).json error:
|
|
|
|
|
+ code: 'user_already_added'
|
|
|
|
|
+ message: req.i18n.translate('user_already_added')
|
|
|
|
|
+ if error?.userNotFound
|
|
|
|
|
+ return res.status(404).json error:
|
|
|
|
|
+ code: 'user_not_found'
|
|
|
|
|
+ message: req.i18n.translate('user_not_found')
|
|
|
return next(error) if error?
|
|
return next(error) if error?
|
|
|
res.json(user: user)
|
|
res.json(user: user)
|
|
|
|
|
|
|
@@ -35,7 +48,17 @@ module.exports =
|
|
|
if entityConfig.readOnly
|
|
if entityConfig.readOnly
|
|
|
return next(new Errors.NotFoundError("Cannot remove users from entity"))
|
|
return next(new Errors.NotFoundError("Cannot remove users from entity"))
|
|
|
|
|
|
|
|
|
|
+ loggedInUserId = AuthenticationController.getLoggedInUserId(req)
|
|
|
|
|
+ if loggedInUserId == userId
|
|
|
|
|
+ return res.status(400).json error:
|
|
|
|
|
+ code: 'managers_cannot_remove_self'
|
|
|
|
|
+ message: req.i18n.translate('managers_cannot_remove_self')
|
|
|
|
|
+
|
|
|
UserMembershipHandler.removeUser entity, entityConfig, userId, (error, user)->
|
|
UserMembershipHandler.removeUser entity, entityConfig, userId, (error, user)->
|
|
|
|
|
+ if error?.isAdmin
|
|
|
|
|
+ return res.status(400).json error:
|
|
|
|
|
+ code: 'managers_cannot_remove_admin'
|
|
|
|
|
+ message: req.i18n.translate('managers_cannot_remove_admin')
|
|
|
return next(error) if error?
|
|
return next(error) if error?
|
|
|
res.send()
|
|
res.send()
|
|
|
|
|
|