delete-user.mjs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import UserGetter from '../../../app/src/Features/User/UserGetter.js'
  2. import UserDeleter from '../../../app/src/Features/User/UserDeleter.js'
  3. import { fileURLToPath } from 'url'
  4. import minimist from 'minimist'
  5. const filename = fileURLToPath(import.meta.url)
  6. async function main() {
  7. const argv = minimist(process.argv.slice(2), {
  8. string: ['email'],
  9. boolean: ['skip-email'],
  10. })
  11. const { email, 'skip-email': skipEmail } = argv
  12. if (!email) {
  13. console.error(
  14. `Usage: node ${filename} [--skip-email] --email=joe@example.com
  15. Deletes a user. All users' projects will also be deleted.
  16. Options:
  17. --email email address of the user being deleted
  18. --skip-email (optional) when present, the user is not notified of the deletion via email
  19. `
  20. )
  21. process.exit(1)
  22. }
  23. await new Promise((resolve, reject) => {
  24. UserGetter.getUser({ email }, { _id: 1 }, function (error, user) {
  25. if (error) {
  26. return reject(error)
  27. }
  28. if (!user) {
  29. console.log(
  30. `user ${email} not in database, potentially already deleted`
  31. )
  32. return resolve()
  33. }
  34. const options = {
  35. ipAddress: '0.0.0.0',
  36. force: true,
  37. skipEmail,
  38. }
  39. UserDeleter.deleteUser(user._id, options, function (err) {
  40. if (err) {
  41. return reject(err)
  42. }
  43. resolve()
  44. })
  45. })
  46. })
  47. }
  48. main()
  49. .then(() => {
  50. console.error('Done.')
  51. process.exit(0)
  52. })
  53. .catch(err => {
  54. console.error(err)
  55. process.exit(1)
  56. })