| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /* 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()
- })
- })
- )
- }
- )
- }
|