From ddba50dee6257ac953d4431f4fdba32df982ef23 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 22 Jun 2022 21:29:45 -0700 Subject: [PATCH] fix delete user resolver and map it to deleteAccount mutation --- packages/api/src/datalayer/user/index.ts | 15 ++++++--------- .../api/src/resolvers/function_resolvers.ts | 2 ++ packages/api/src/resolvers/user/index.ts | 19 ++++++++++--------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/api/src/datalayer/user/index.ts b/packages/api/src/datalayer/user/index.ts index ef39505b1..95e81000a 100644 --- a/packages/api/src/datalayer/user/index.ts +++ b/packages/api/src/datalayer/user/index.ts @@ -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 { } @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 { + return super.delete(userId, tx) } } diff --git a/packages/api/src/resolvers/function_resolvers.ts b/packages/api/src/resolvers/function_resolvers.ts index a3e2de75f..910da40d2 100644 --- a/packages/api/src/resolvers/function_resolvers.ts +++ b/packages/api/src/resolvers/function_resolvers.ts @@ -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, diff --git a/packages/api/src/resolvers/user/index.ts b/packages/api/src/resolvers/user/index.ts index 90d4786d7..4ec6f1261 100644 --- a/packages/api/src/resolvers/user/index.ts +++ b/packages/api/src/resolvers/user/index.ts @@ -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], + } + } })