UserMembershipsHandler.coffee 1.4 KB

1234567891011121314151617181920212223242526272829303132
  1. async = require("async")
  2. EntityModels =
  3. Institution: require('../../models/Institution').Institution
  4. Subscription: require('../../models/Subscription').Subscription
  5. Publisher: require('../../models/Publisher').Publisher
  6. UserMembershipEntityConfigs = require "./UserMembershipEntityConfigs"
  7. module.exports = UserMembershipsHandler =
  8. removeUserFromAllEntities: (userId, callback = (error) ->) ->
  9. # get all writable entity types
  10. entityConfigs = []
  11. for key, entityConfig of UserMembershipEntityConfigs
  12. entityConfigs.push(entityConfig) if entityConfig.fields.write?
  13. # remove the user from all entities types
  14. async.map entityConfigs, ((entityConfig, innerCallback) ->
  15. UserMembershipsHandler.removeUserFromEntities entityConfig, userId, innerCallback
  16. ), callback
  17. removeUserFromEntities: (entityConfig, userId, callback = (error) ->) ->
  18. removeOperation = "$pull": {}
  19. removeOperation["$pull"][entityConfig.fields.write] = userId
  20. EntityModels[entityConfig.modelName].updateMany {}, removeOperation, callback
  21. getEntitiesByUser: (entityConfig, userId, callback = (error, entities) ->) ->
  22. query = Object.assign({}, entityConfig.baseQuery)
  23. query[entityConfig.fields.access] = userId
  24. EntityModels[entityConfig.modelName].find query, (error, entities = []) ->
  25. return callback(error) if error?
  26. async.mapSeries entities,
  27. (entity, cb) -> entity.fetchV1Data(cb),
  28. callback