diff --git a/tasks/CreateAndDestoryUsers.coffee b/tasks/CreateAndDestoryUsers.coffee index 14ed4ca360..79da259c67 100644 --- a/tasks/CreateAndDestoryUsers.coffee +++ b/tasks/CreateAndDestoryUsers.coffee @@ -9,31 +9,33 @@ module.exports = (grunt) -> process.exit(1) settings = require "settings-sharelatex" + mongodb = require "../web/app/src/infrastructure/mongodb" UserRegistrationHandler = require "../web/app/src/Features/User/UserRegistrationHandler" OneTimeTokenHandler = require "../web/app/src/Features/Security/OneTimeTokenHandler" - UserRegistrationHandler.registerNewUser { - email: email - password: require("crypto").randomBytes(32).toString("hex") - }, (error, user) -> - if error? and error?.message != "EmailAlreadyRegistered" - throw error - user.isAdmin = true - user.save (error) -> - throw error if error? - ONE_WEEK = 7 * 24 * 60 * 60 # seconds - OneTimeTokenHandler.getNewToken "password", { expiresIn: ONE_WEEK, email:user.email, user_id: user._id.toString() }, (err, token)-> - return next(err) if err? - - console.log "" - console.log """ - Successfully created #{email} as an admin user. - - Please visit the following URL to set a password for #{email} and log in: - - #{settings.siteUrl}/user/password/set?passwordResetToken=#{token} - - """ - done() + mongodb.waitForDb().then () -> + UserRegistrationHandler.registerNewUser { + email: email + password: require("crypto").randomBytes(32).toString("hex") + }, (error, user) -> + if error? and error?.message != "EmailAlreadyRegistered" + throw error + user.isAdmin = true + user.save (error) -> + throw error if error? + ONE_WEEK = 7 * 24 * 60 * 60 # seconds + OneTimeTokenHandler.getNewToken "password", { expiresIn: ONE_WEEK, email:user.email, user_id: user._id.toString() }, (err, token)-> + return next(err) if err? + + console.log "" + console.log """ + Successfully created #{email} as an admin user. + + Please visit the following URL to set a password for #{email} and log in: + + #{settings.siteUrl}/user/password/set?passwordResetToken=#{token} + + """ + done() grunt.registerTask 'user:delete', "deletes a user and all their data, Usage: grunt user:delete --email joe@example.com", () -> done = @async() @@ -42,15 +44,17 @@ module.exports = (grunt) -> console.error "Usage: grunt user:delete --email=joe@example.com" process.exit(1) settings = require "settings-sharelatex" + mongodb = require "../web/app/src/infrastructure/mongodb" UserGetter = require "../web/app/src/Features/User/UserGetter" UserDeleter = require "../web/app/src/Features/User/UserDeleter" - UserGetter.getUser email:email, (error, user) -> - if error? - throw error - if !user? - console.log("user #{email} not in database, potentially already deleted") - return done() - UserDeleter.deleteUser user._id, (err)-> - if err? - throw err - done() + mongodb.waitForDb().then () -> + UserGetter.getUser email:email, (error, user) -> + if error? + throw error + if !user? + console.log("user #{email} not in database, potentially already deleted") + return done() + UserDeleter.deleteUser user._id, (err)-> + if err? + throw err + done()