From 393169bc2abd3588962d6e5794f1f26de1e38598 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 19 Mar 2015 17:36:50 +0000 Subject: [PATCH] Create a grunt task to create the admin user --- services/web/Gruntfile.coffee | 34 +++++++++++++++++++ .../Features/User/UserController.coffee | 1 - 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/services/web/Gruntfile.coffee b/services/web/Gruntfile.coffee index adf9763656..e31fd2f194 100644 --- a/services/web/Gruntfile.coffee +++ b/services/web/Gruntfile.coffee @@ -290,3 +290,37 @@ module.exports = (grunt) -> grunt.registerTask 'default', 'run' grunt.registerTask 'version', "Write the version number into sentry.jade", ['git-rev-parse', 'sed'] + + grunt.registerTask 'create-admin-user', "Create a user with the given email address and make them an admin. Update in place if the user already exists", () -> + done = @async() + email = grunt.option("email") + if !email? + console.error "Usage: grunt create-admin-user --email joe@example.com" + process.exit(1) + + settings = require "settings-sharelatex" + UserRegistrationHandler = require "./app/js/Features/User/UserRegistrationHandler" + PasswordResetTokenHandler = require "./app/js/Features/PasswordReset/PasswordResetTokenHandler" + 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 + PasswordResetTokenHandler.getNewToken user._id, { expiresIn: ONE_WEEK }, (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() \ No newline at end of file diff --git a/services/web/app/coffee/Features/User/UserController.coffee b/services/web/app/coffee/Features/User/UserController.coffee index ea3a6eeee0..b057914ecb 100644 --- a/services/web/app/coffee/Features/User/UserController.coffee +++ b/services/web/app/coffee/Features/User/UserController.coffee @@ -97,7 +97,6 @@ module.exports = if err?.message == "EmailAlreadyRegistered" logger.log {email}, "user already exists, resending welcome email" - # TODO: Make a long term token. ONE_WEEK = 7 * 24 * 60 * 60 # seconds PasswordResetTokenHandler.getNewToken user._id, { expiresIn: ONE_WEEK }, (err, token)-> return next(err) if err?