fix delete user resolver and map it to deleteAccount mutation

This commit is contained in:
Satindar Dhillon
2022-06-22 21:29:45 -07:00
parent da76ae7aab
commit ddba50dee6
3 changed files with 18 additions and 18 deletions

View File

@ -10,7 +10,7 @@ import {
UpdateSet,
UserData,
} from './model'
import DataModel, { MAX_RECORDS_LIMIT } from '../model'
import DataModel, { DataModelError, MAX_RECORDS_LIMIT } from '../model'
import Knex from 'knex'
import { ENABLE_DB_REQUEST_LOGGING, globalCounter, logMethod } from '../helpers'
import { Table } from '../../utils/dictionary'
@ -329,14 +329,11 @@ class UserModel extends DataModel<UserData, CreateSet, UpdateSet> {
}
@logMethod
deleteUser(userId: string, tx: Knex.Transaction): boolean {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const result = super.delete(userId, tx) as any
if (result.error) {
return false
} else {
return true
}
deleteUser(
userId: string,
tx: Knex.Transaction
): Promise<UserData | { error: DataModelError }> {
return super.delete(userId, tx)
}
}

View File

@ -30,6 +30,7 @@ import {
createLabelResolver,
createNewsletterEmailResolver,
createReminderResolver,
deleteAccountResolver,
deleteHighlightResolver,
deleteLabelResolver,
deleteNewsletterEmailResolver,
@ -118,6 +119,7 @@ export const functionResolvers = {
googleLogin: googleLoginResolver,
googleSignup: googleSignupResolver,
logOut: logOutResolver,
deleteAccount: deleteAccountResolver,
saveArticleReadingProgress: saveArticleReadingProgressResolver,
updateUser: updateUserResolver,
updateUserProfile: updateUserProfileResolver,

View File

@ -38,6 +38,7 @@ import { validateUsername } from '../../utils/usernamePolicy'
import * as jwt from 'jsonwebtoken'
import { createUser } from '../../services/create_user'
import { comparePassword, hashPassword } from '../../utils/auth'
import type { UserData } from '../../datalayer/user/model'
export const updateUserResolver = authorized<
UpdateUserSuccess,
@ -364,7 +365,7 @@ export const deleteAccountResolver = authorized<
DeleteAccountSuccess,
DeleteAccountError,
MutationDeleteAccountArgs
>(async (_, { userID }, { models, claims, log }) => {
>(async (_, { userID }, { models, claims, log, authTrx }) => {
const user = await models.user.get(userID)
if (!user || user.id !== claims.uid) {
@ -374,15 +375,9 @@ export const deleteAccountResolver = authorized<
}
const deleteUserResult = await authTrx((tx) =>
models.user.deleteUser(userID as string, tx)
models.user.deleteUser(claims.uid, tx)
)
if (!deleteUserResult) {
return {
errorCodes: [DeleteAccountErrorCode.Forbidden],
}
}
log.info('Deleting a user account', {
userID,
labels: {
@ -392,5 +387,11 @@ export const deleteAccountResolver = authorized<
},
})
return { userID }
if ((deleteUserResult as UserData).id !== undefined) {
return { userID }
} else {
return {
errorCodes: [DeleteAccountErrorCode.Forbidden],
}
}
})