overleaf/services/web/app/coffee/Features/User/UserCreator.coffee

46 lines
1.2 KiB
CoffeeScript
Raw Normal View History

2014-02-12 05:23:40 -05:00
User = require("../../models/User").User
logger = require("logger-sharelatex")
metrics = require('metrics-sharelatex')
2018-07-10 15:49:24 -04:00
{ addAffiliation } = require("../Institutions/InstitutionsAPI")
2014-02-12 05:23:40 -05:00
2017-03-17 10:55:41 -04:00
module.exports = UserCreator =
2014-02-12 05:23:40 -05:00
createNewUser: (opts, callback)->
logger.log opts:opts, "creating new user"
2014-02-12 05:23:40 -05:00
user = new User()
username = opts.email.match(/^[^@]*/)
2017-08-07 06:24:04 -04:00
if !opts.first_name? or opts.first_name == ""
opts.first_name = username[0]
2017-08-07 06:24:04 -04:00
for key, value of opts
user[key] = value
user.ace.syntaxValidation = true
user.featureSwitches?.pdfng = true
2018-05-28 10:08:37 -04:00
user.emails = [
email: user.email
createdAt: new Date()
]
2014-02-12 05:23:40 -05:00
user.save (err)->
callback(err, user)
2017-03-17 10:55:41 -04:00
# call addaffiliation after the main callback so it runs in the
# background. There is no guaranty this will run so we must no rely on it
addAffiliation user._id, user.email, (error) ->
if error
logger.log { userId: user._id, email: user.email, error: error },
"couldn't add affiliation for user on create"
else
logger.log { userId: user._id, email: user.email },
"added affiliation for user on create"
2017-03-17 10:55:41 -04:00
metrics.timeAsyncMethod(
UserCreator, 'createNewUser',
'mongo.UserCreator',
logger
)