From 9013866e49ec31ac4890964509c20bf4d9f26e8e Mon Sep 17 00:00:00 2001 From: Ashoat Tevosyan Date: Thu, 10 Oct 2024 00:35:10 -0400 Subject: [PATCH] [keyserver] Script to delete user Summary: This script will let us ban spambots like Emilia: [ENG-9502](https://linear.app/comm/issue/ENG-9502/ban-emilia). Test Plan: I ran this in my local environment, but my user ID isn't 256 on staging, so I got this error: ``` [Error: user_is_not_staff] { code: 'GenericFailure' } ``` Once identity 0.41 is deployed to prod, I can try testing this in production. Reviewers: varun Reviewed By: varun Subscribers: tomek Differential Revision: https://phab.comm.dev/D13691 --- keyserver/src/scripts/delete-account.js | 15 +++++++++++++++ keyserver/src/utils/identity-utils.js | 18 +++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 keyserver/src/scripts/delete-account.js diff --git a/keyserver/src/scripts/delete-account.js b/keyserver/src/scripts/delete-account.js new file mode 100644 index 0000000000..cfe755ac32 --- /dev/null +++ b/keyserver/src/scripts/delete-account.js @@ -0,0 +1,15 @@ +// @flow + +import { main } from './utils.js'; +import { deleteAccount } from '../deleters/account-deleters.js'; +import { createScriptViewer } from '../session/scripts.js'; +import { privilegedDeleteUsers } from '../utils/identity-utils.js'; + +async function deleteTargetAccount() { + const targetUserID = ''; + await privilegedDeleteUsers([targetUserID]); + const viewer = createScriptViewer(targetUserID); + await deleteAccount(viewer); +} + +main([deleteTargetAccount]); diff --git a/keyserver/src/utils/identity-utils.js b/keyserver/src/utils/identity-utils.js index c2024fa7e0..556b1efadb 100644 --- a/keyserver/src/utils/identity-utils.js +++ b/keyserver/src/utils/identity-utils.js @@ -23,4 +23,20 @@ async function findUserIdentities( ); } -export { findUserIdentities }; +async function privilegedDeleteUsers( + userIDs: $ReadOnlyArray, +): Promise { + const [rustAPI, identityInfo, deviceID] = await Promise.all([ + getRustAPI(), + verifyUserLoggedIn(), + getContentSigningKey(), + ]); + await rustAPI.privilegedDeleteUsers( + identityInfo.userId, + deviceID, + identityInfo.accessToken, + userIDs, + ); +} + +export { findUserIdentities, privilegedDeleteUsers };