From 4a51231bf9bd0782b2e165d209314caf321310a4 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 18 Feb 2022 12:44:35 +0100 Subject: [PATCH] admin resolver - use entity instead of repository - include deleted users in our query for pending transactions - throw an error when trying to add or confirm a pending transaction for a deleted user --- backend/src/graphql/resolver/AdminResolver.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index c314b5bb7..eed395926 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -23,6 +23,7 @@ import { calculateDecay } from '../../util/decay' import { AdminPendingCreation } from '@entity/AdminPendingCreation' import { hasElopageBuys } from '../../util/hasElopageBuys' import { LoginEmailOptIn } from '@entity/LoginEmailOptIn' +import { User } from '@entity/User' // const EMAIL_OPT_IN_REGISTER = 1 // const EMAIL_OPT_UNKNOWN = 3 // elopage? @@ -82,8 +83,10 @@ export class AdminResolver { async createPendingCreation( @Args() { email, amount, memo, creationDate, moderator }: CreatePendingCreationArgs, ): Promise { - const userRepository = getCustomRepository(UserRepository) - const user = await userRepository.findByEmail(email) + const user = await User.findOne({ email }) + if (!user) { + throw new Error(`Could not find user with email: ${email}`) + } if (!user.emailChecked) { throw new Error('Creation could not be saved, Email is not activated') } @@ -134,8 +137,13 @@ export class AdminResolver { async updatePendingCreation( @Args() { id, email, amount, memo, creationDate, moderator }: UpdatePendingCreationArgs, ): Promise { - const userRepository = getCustomRepository(UserRepository) - const user = await userRepository.findByEmail(email) + const user = await User.findOne({ email }, { withDeleted: true }) + if (!user) { + throw new Error(`Could not find user with email: ${email}`) + } + if (user.deletedAt) { + throw new Error(`User was deleted (${email})`) + } const pendingCreationToUpdate = await AdminPendingCreation.findOneOrFail({ id })