create-user.mjs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import minimist from 'minimist'
  2. import { db } from '../../../app/src/infrastructure/mongodb.js'
  3. import UserRegistrationHandler from '../../../app/src/Features/User/UserRegistrationHandler.js'
  4. import { fileURLToPath } from 'url'
  5. const filename = fileURLToPath(import.meta.url)
  6. export default async function main() {
  7. const argv = minimist(process.argv.slice(2), {
  8. string: ['email'],
  9. boolean: ['admin'],
  10. })
  11. const { admin, email } = argv
  12. if (!email) {
  13. console.error(`Usage: node ${filename} [--admin] --email=joe@example.com`)
  14. process.exit(1)
  15. }
  16. await new Promise((resolve, reject) => {
  17. UserRegistrationHandler.registerNewUserAndSendActivationEmail(
  18. email,
  19. (error, user, setNewPasswordUrl) => {
  20. if (error) {
  21. return reject(error)
  22. }
  23. db.users.updateOne(
  24. { _id: user._id },
  25. { $set: { isAdmin: admin } },
  26. error => {
  27. if (error) {
  28. return reject(error)
  29. }
  30. console.log('')
  31. console.log(`\
  32. Successfully created ${email} as ${admin ? 'an admin' : 'a'} user.
  33. Please visit the following URL to set a password for ${email} and log in:
  34. ${setNewPasswordUrl}
  35. `)
  36. resolve()
  37. }
  38. )
  39. }
  40. )
  41. })
  42. }