diff --git a/keyserver/src/scripts/delete-account.js b/keyserver/src/scripts/delete-account.js new file mode 100644 index 000000000..cfe755ac3 --- /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 c2024fa7e..556b1efad 100644 --- a/keyserver/src/utils/identity-utils.js +++ b/keyserver/src/utils/identity-utils.js @@ -1,26 +1,42 @@ // @flow import { getRustAPI } from 'rust-node-addon'; import type { UserIdentitiesResponse } from 'lib/types/identity-service-types.js'; import { getContentSigningKey } from './olm-utils.js'; import { verifyUserLoggedIn } from '../user/login.js'; async function findUserIdentities( userIDs: $ReadOnlyArray, ): Promise { const [rustAPI, identityInfo, deviceID] = await Promise.all([ getRustAPI(), verifyUserLoggedIn(), getContentSigningKey(), ]); return await rustAPI.findUserIdentities( identityInfo.userId, deviceID, identityInfo.accessToken, userIDs, ); } -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 };