fix delete user resolver and map it to deleteAccount mutation
This commit is contained in:
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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],
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user