UserMembershipAuthorization.coffee 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. AuthenticationController = require('../Authentication/AuthenticationController')
  2. AuthorizationMiddlewear = require('../Authorization/AuthorizationMiddlewear')
  3. UserMembershipHandler = require('./UserMembershipHandler')
  4. EntityConfigs = require('./UserMembershipEntityConfigs')
  5. Errors = require('../Errors/Errors')
  6. logger = require("logger-sharelatex")
  7. module.exports =
  8. requireEntityAccess: (entityName, entityIdOverride = null) ->
  9. (req, res, next) ->
  10. loggedInUser = AuthenticationController.getSessionUser(req)
  11. unless loggedInUser
  12. return AuthorizationMiddlewear.redirectToRestricted req, res, next
  13. entityId = entityIdOverride or req.params.id
  14. getEntity entityName, entityId, loggedInUser, (error, entity, entityConfig) ->
  15. return next(error) if error?
  16. unless entity?
  17. return AuthorizationMiddlewear.redirectToRestricted(req, res, next)
  18. req.entity = entity
  19. req.entityConfig = entityConfig
  20. next()
  21. getEntity = (entityName, entityId, userId, callback = (error, entity, entityConfig)->) ->
  22. entityConfig = EntityConfigs[entityName]
  23. unless entityConfig
  24. return callback(new Errors.NotFoundError("No such entity: #{entityName}"))
  25. UserMembershipHandler.getEntity entityId, entityConfig, userId, (error, entity)->
  26. return callback(error) if error?
  27. callback(null, entity, entityConfig)