Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/deleters/account-deleters.js
Show First 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | if ( | ||||
!bcrypt.compareSync(request.password, row.hash)) | !bcrypt.compareSync(request.password, row.hash)) | ||||
) { | ) { | ||||
throw new ServerError('invalid_credentials'); | throw new ServerError('invalid_credentials'); | ||||
} | } | ||||
} | } | ||||
const deletedUserID = viewer.userID; | const deletedUserID = viewer.userID; | ||||
await rescindPushNotifs(SQL`n.user = ${deletedUserID}`, SQL`NULL`); | await rescindPushNotifs(SQL`n.user = ${deletedUserID}`, SQL`NULL`); | ||||
const rustAPIPromise = getRustAPI(); | |||||
const knownUserInfos = await fetchKnownUserInfos(viewer); | const knownUserInfos = await fetchKnownUserInfos(viewer); | ||||
const usersToUpdate = values(knownUserInfos).filter( | const usersToUpdate = values(knownUserInfos).filter( | ||||
userID => userID !== deletedUserID, | userID => userID !== deletedUserID, | ||||
); | ); | ||||
// TODO: if this results in any orphaned orgs, convert them to chats | // TODO: if this results in any orphaned orgs, convert them to chats | ||||
const deletionQuery = SQL` | const deletionQuery = SQL` | ||||
START TRANSACTION; | START TRANSACTION; | ||||
Show All 31 Lines | ): Promise<?LogOutResponse> { | ||||
const promises = {}; | const promises = {}; | ||||
promises.deletion = dbQuery(deletionQuery, { multipleStatements: true }); | promises.deletion = dbQuery(deletionQuery, { multipleStatements: true }); | ||||
if (request) { | if (request) { | ||||
promises.anonymousViewerData = createNewAnonymousCookie({ | promises.anonymousViewerData = createNewAnonymousCookie({ | ||||
platformDetails: viewer.platformDetails, | platformDetails: viewer.platformDetails, | ||||
deviceToken: viewer.deviceToken, | deviceToken: viewer.deviceToken, | ||||
}); | }); | ||||
} | } | ||||
promises.rustAPI = rustAPIPromise; | const { anonymousViewerData } = await promiseAll(promises); | ||||
const { anonymousViewerData, rustAPI } = await promiseAll(promises); | handleAsyncPromise( | ||||
handleAsyncPromise(rustAPI.deleteUser(deletedUserID)); | (async () => { | ||||
const rustAPI = await getRustAPI(); | |||||
await rustAPI.deleteUser(deletedUserID); | |||||
})(), | |||||
); | |||||
if (anonymousViewerData) { | if (anonymousViewerData) { | ||||
viewer.setNewCookie(anonymousViewerData); | viewer.setNewCookie(anonymousViewerData); | ||||
} | } | ||||
const deletionUpdatesPromise = createAccountDeletionUpdates( | const deletionUpdatesPromise = createAccountDeletionUpdates( | ||||
usersToUpdate, | usersToUpdate, | ||||
deletedUserID, | deletedUserID, | ||||
); | ); | ||||
Show All 36 Lines |