UserMembershipAuthorization.coffee 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. requireTeamAccess: (req, res, next) ->
  9. requireAccessToEntity('team', req.params.id, req, res, next)
  10. requireGroupAccess: (req, res, next) ->
  11. requireAccessToEntity('group', req.params.id, req, res, next)
  12. requireGroupManagersAccess: (req, res, next) ->
  13. requireAccessToEntity('groupManagers', req.params.id, req, res, next)
  14. requireInstitutionAccess: (req, res, next) ->
  15. requireAccessToEntity('institution', req.params.id, req, res, next)
  16. requirePublisherAccess: (req, res, next) ->
  17. requireAccessToEntity('publisher', req.params.id, req, res, next)
  18. requireGraphAccess: (req, res, next) ->
  19. requireAccessToEntity(
  20. req.query.resource_type, req.query.resource_id, req, res, next
  21. )
  22. requireAccessToEntity = (entityName, entityId, req, res, next) ->
  23. loggedInUser = AuthenticationController.getSessionUser(req)
  24. unless loggedInUser
  25. return AuthorizationMiddlewear.redirectToRestricted req, res, next
  26. getEntity entityName, entityId, loggedInUser, (error, entity, entityConfig) ->
  27. return next(error) if error?
  28. unless entity?
  29. return AuthorizationMiddlewear.redirectToRestricted(req, res, next)
  30. req.entity = entity
  31. req.entityConfig = entityConfig
  32. next()
  33. getEntity = (entityName, entityId, userId, callback = (error, entity, entityConfig)->) ->
  34. entityConfig = EntityConfigs[entityName]
  35. unless entityConfig
  36. return callback(new Errors.NotFoundError("No such entity: #{entityName}"))
  37. UserMembershipHandler.getEntity entityId, entityConfig, userId, (error, entity)->
  38. return callback(error) if error?
  39. callback(null, entity, entityConfig)