UserUpdater.coffee 998 B

123456789101112131415161718192021222324252627282930313233
  1. logger = require("logger-sharelatex")
  2. mongojs = require("../../infrastructure/mongojs")
  3. metrics = require("metrics-sharelatex")
  4. db = mongojs.db
  5. ObjectId = mongojs.ObjectId
  6. UserLocator = require("./UserLocator")
  7. module.exports = UserUpdater =
  8. updateUser: (query, update, callback = (error) ->) ->
  9. if typeof query == "string"
  10. query = _id: ObjectId(query)
  11. else if query instanceof ObjectId
  12. query = _id: query
  13. db.users.update query, update, callback
  14. changeEmailAddress: (user_id, newEmail, callback)->
  15. self = @
  16. logger.log user_id:user_id, newEmail:newEmail, "updaing email address of user"
  17. UserLocator.findByEmail newEmail, (error, user) ->
  18. if user?
  19. return callback({message:"alread_exists"})
  20. self.updateUser user_id.toString(), {
  21. $set: { "email": newEmail},
  22. }, (err) ->
  23. if err?
  24. logger.err err:err, "problem updating users email"
  25. return callback(err)
  26. callback()
  27. metrics.timeAsyncMethod UserUpdater, 'updateUser', 'mongo.UserUpdater', logger