UserMembershipController.coffee 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. AuthenticationController = require('../Authentication/AuthenticationController')
  2. UserMembershipHandler = require('./UserMembershipHandler')
  3. EntityConfigs = require('./UserMembershipEntityConfigs')
  4. Errors = require('../Errors/Errors')
  5. logger = require("logger-sharelatex")
  6. module.exports =
  7. index: (entityName, req, res, next)->
  8. getEntity entityName, req, (error, entity, entityConfig) ->
  9. return next(error) if error?
  10. UserMembershipHandler.getUsers entity, entityConfig, (error, users)->
  11. return next(error) if error?
  12. res.render "user_membership/index",
  13. users: users
  14. groupSize: entity.membersLimit if entityConfig.hasMembersLimit
  15. translations: entityConfig.translations
  16. paths: entityConfig.pathsFor(entity._id.toString())
  17. add: (entityName, req, res, next)->
  18. email = req.body.email
  19. return res.sendStatus 422 unless email
  20. getEntity entityName, req, (error, entity, entityConfig) ->
  21. return next(error) if error?
  22. if entityConfig.readOnly
  23. return next(new Errors.NotFoundError("Cannot add users to entity"))
  24. UserMembershipHandler.addUser entity, entityConfig, email, (error, user)->
  25. return next(error) if error?
  26. res.json(user: user)
  27. remove: (entityName, req, res, next)->
  28. userId = req.params.userId
  29. getEntity entityName, req, (error, entity, entityConfig) ->
  30. return next(error) if error?
  31. if entityConfig.readOnly
  32. return next(new Errors.NotFoundError("Cannot remove users from entity"))
  33. UserMembershipHandler.removeUser entity, entityConfig, userId, (error, user)->
  34. return next(error) if error?
  35. res.send()
  36. getEntity = (entityName, req, callback) ->
  37. entityConfig = EntityConfigs[entityName]
  38. unless entityConfig
  39. return callback(new Errors.NotFoundError("No such entity: #{entityName}"))
  40. loggedInUser = AuthenticationController.getSessionUser(req)
  41. entityId = req.params.id
  42. UserMembershipHandler.getEntity entityId, entityConfig, loggedInUser, (error, entity)->
  43. return callback(error) if error?
  44. return callback(new Errors.NotFoundError()) unless entity?
  45. callback(null, entity, entityConfig)