diff --git a/keyserver/src/scripts/delete-account.js b/keyserver/src/scripts/delete-account.js new file mode 100644 --- /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 --- a/keyserver/src/utils/identity-utils.js +++ b/keyserver/src/utils/identity-utils.js @@ -23,4 +23,20 @@ ); } -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 };