| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /* eslint-disable
- no-undef,
- no-unused-vars,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- module.exports = function(grunt) {
- grunt.registerTask('user:create-admin', "Create a user with the given email address and make them an admin. Update in place if the user already exists. Usage: grunt user:create-admin --email joe@example.com", function() {
- const done = this.async();
- const email = grunt.option("email");
- if ((email == null)) {
- console.error("Usage: grunt user:create-admin --email=joe@example.com");
- process.exit(1);
- }
- const settings = require("settings-sharelatex");
- const mongodb = require("../web/app/src/infrastructure/mongodb");
- const UserRegistrationHandler = require("../web/app/src/Features/User/UserRegistrationHandler");
- const OneTimeTokenHandler = require("../web/app/src/Features/Security/OneTimeTokenHandler");
- return mongodb.waitForDb().then(() => UserRegistrationHandler.registerNewUser({
- email,
- password: require("crypto").randomBytes(32).toString("hex")
- }, function(error, user) {
- if ((error != null) && ((error != null ? error.message : undefined) !== "EmailAlreadyRegistered")) {
- throw error;
- }
- user.isAdmin = true;
- return user.save(function(error) {
- if (error != null) { throw error; }
- const ONE_WEEK = 7 * 24 * 60 * 60; // seconds
- return OneTimeTokenHandler.getNewToken("password", { expiresIn: ONE_WEEK, email:user.email, user_id: user._id.toString() }, function(err, token){
- if (err != null) { return next(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}
- \
- `
- );
- return done();
- });
- });
- }));
- });
- return grunt.registerTask('user:delete', "deletes a user and all their data, Usage: grunt user:delete --email joe@example.com", function() {
- const done = this.async();
- const email = grunt.option("email");
- if ((email == null)) {
- console.error("Usage: grunt user:delete --email=joe@example.com");
- process.exit(1);
- }
- const settings = require("settings-sharelatex");
- const mongodb = require("../web/app/src/infrastructure/mongodb");
- const UserGetter = require("../web/app/src/Features/User/UserGetter");
- const UserDeleter = require("../web/app/src/Features/User/UserDeleter");
- return mongodb.waitForDb().then(() => UserGetter.getUser({email}, function(error, user) {
- if (error != null) {
- throw error;
- }
- if ((user == null)) {
- console.log(`user ${email} not in database, potentially already deleted`);
- return done();
- }
- return UserDeleter.deleteUser(user._id, function(err){
- if (err != null) {
- throw err;
- }
- return done();
- });
- }));
- });
- };
|