UserMembershipController.coffee 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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: (req, res, next)->
  8. { entity, entityConfig } = req
  9. UserMembershipHandler.getUsers entity, entityConfig, (error, users)->
  10. return next(error) if error?
  11. entityPrimaryKey = entity[entityConfig.fields.primaryKey].toString()
  12. res.render "user_membership/index",
  13. users: users
  14. groupSize: entity.membersLimit if entityConfig.hasMembersLimit
  15. translations: entityConfig.translations
  16. paths: entityConfig.pathsFor(entityPrimaryKey)
  17. add: (req, res, next)->
  18. { entity, entityConfig } = req
  19. email = req.body.email
  20. return res.sendStatus 422 unless email
  21. if entityConfig.readOnly
  22. return next(new Errors.NotFoundError("Cannot add users to entity"))
  23. UserMembershipHandler.addUser entity, entityConfig, email, (error, user)->
  24. return next(error) if error?
  25. res.json(user: user)
  26. remove: (req, res, next)->
  27. { entity, entityConfig } = req
  28. userId = req.params.userId
  29. if entityConfig.readOnly
  30. return next(new Errors.NotFoundError("Cannot remove users from entity"))
  31. UserMembershipHandler.removeUser entity, entityConfig, userId, (error, user)->
  32. return next(error) if error?
  33. res.send()
  34. exportCsv: (req, res, next)->
  35. { entity, entityConfig } = req
  36. logger.log subscriptionId: entity._id, "exporting csv"
  37. UserMembershipHandler.getUsers entity, entityConfig, (error, users)->
  38. return next(error) if error?
  39. csvOutput = ""
  40. for user in users
  41. csvOutput += user.email + "\n"
  42. res.header(
  43. "Content-Disposition",
  44. "attachment; filename=Group.csv"
  45. )
  46. res.contentType('text/csv')
  47. res.send(csvOutput)