UserCreator.coffee 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. User = require("../../models/User").User
  2. UserLocator = require("./UserLocator")
  3. logger = require("logger-sharelatex")
  4. metrics = require('metrics-sharelatex')
  5. module.exports = UserCreator =
  6. getUserOrCreateHoldingAccount: (email, callback = (err, user)->)->
  7. self = @
  8. UserLocator.findByEmail email, (err, user)->
  9. if user?
  10. callback(err, user)
  11. else
  12. self.createNewUser email:email, holdingAccount:true, callback
  13. createNewUser: (opts, callback)->
  14. logger.log opts:opts, "creating new user"
  15. user = new User()
  16. user.email = opts.email
  17. user.holdingAccount = opts.holdingAccount
  18. user.ace.syntaxValidation = true
  19. username = opts.email.match(/^[^@]*/)
  20. if opts.first_name? and opts.first_name.length != 0
  21. user.first_name = opts.first_name
  22. else if username?
  23. user.first_name = username[0]
  24. else
  25. user.first_name = ""
  26. if opts.last_name?
  27. user.last_name = opts.last_name
  28. else
  29. user.last_name = ""
  30. user.featureSwitches?.pdfng = true
  31. user.save (err)->
  32. callback(err, user)
  33. metrics.timeAsyncMethod(
  34. UserCreator, 'createNewUser',
  35. 'mongo.UserCreator',
  36. logger
  37. )