| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- const { ObjectId, waitForDb } = require('../app/src/infrastructure/mongodb')
- const UserUpdater = require('../app/src/Features/User/UserUpdater')
- const UserGetter = require('../app/src/Features/User/UserGetter')
- waitForDb()
- .then(removeEmail)
- .catch(error => {
- console.error(error)
- process.exit(1)
- })
- .then(() => {
- console.log('Done.')
- process.exit()
- })
- async function removeEmail() {
- const userId = process.argv[2]
- let email = process.argv[3]
- if (!ObjectId.isValid(userId)) {
- throw new Error(`user ID ${userId} is not valid`)
- }
- if (!email) {
- throw new Error('no email provided')
- }
- // email arg can be within double quotes for arg so that we can handle
- // malformed emails with spaces
- email = email.replace(/"/g, '')
- console.log(
- `\nBegin request to remove email "${email}" from user "${userId}"\n`
- )
- const userWithEmail = await UserGetter.promises.getUserByAnyEmail(email, {
- _id: 1,
- })
- if (!userWithEmail) {
- throw new Error(`no user found with email "${email}"`)
- }
- if (userWithEmail._id.toString() !== userId) {
- throw new Error(
- `email does not belong to user. Belongs to ${userWithEmail._id}`
- )
- }
- const auditLog = {
- initiatorId: undefined,
- ipAddress: '0.0.0.0',
- extraInfo: {
- script: true,
- },
- }
- const skipParseEmail = true
- await UserUpdater.promises.removeEmailAddress(
- userId,
- email,
- auditLog,
- skipParseEmail
- )
- }
|