From 1b4f0d4b60f78c6f09013aac2e38646350396a13 Mon Sep 17 00:00:00 2001 From: ogerly Date: Tue, 22 Feb 2022 20:09:27 +0100 Subject: [PATCH] change Mutation in Date, nullable: true in DELETE_USER, UNDELETE_USER --- backend/src/graphql/model/UserAdmin.ts | 13 +++++++ backend/src/graphql/resolver/AdminResolver.ts | 35 ++++++++++--------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/backend/src/graphql/model/UserAdmin.ts b/backend/src/graphql/model/UserAdmin.ts index 7a2c2f65a..1d418c66c 100644 --- a/backend/src/graphql/model/UserAdmin.ts +++ b/backend/src/graphql/model/UserAdmin.ts @@ -1,7 +1,20 @@ +import { User } from '@entity/User' import { ObjectType, Field, Int } from 'type-graphql' @ObjectType() export class UserAdmin { + constructor(user: User, creation: number[], hasElopage: boolean, emailConfirmationSend: string) { + this.userId = user.id + this.email = user.email + this.firstName = user.firstName + this.lastName = user.lastName + this.creation = creation + this.emailChecked = user.emailChecked + this.hasElopage = hasElopage + this.deletedAt = user.deletedAt + this.emailConfirmationSend = emailConfirmationSend + } + @Field(() => Number) userId: number diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 6a9eff47c..26791541a 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -23,6 +23,7 @@ import { LoginEmailOptIn } from '@entity/LoginEmailOptIn' import { User } from '@entity/User' import { TransactionTypeId } from '../enum/TransactionTypeId' import { Balance } from '@entity/Balance' +// import { isNullableType } from 'graphql' // const EMAIL_OPT_IN_REGISTER = 1 // const EMAIL_OPT_UNKNOWN = 3 // elopage? @@ -66,15 +67,7 @@ export class AdminResolver { const adminUsers = await Promise.all( users.map(async (user) => { - const adminUser = new UserAdmin() - adminUser.userId = user.id - adminUser.firstName = user.firstName - adminUser.lastName = user.lastName - adminUser.email = user.email - adminUser.creation = await getUserCreations(user.id) - adminUser.emailChecked = user.emailChecked - adminUser.hasElopage = await hasElopageBuys(user.email) - adminUser.deletedAt = user.deletedAt + let emailConfirmationSend = '' if (!user.emailChecked) { const emailOptIn = await LoginEmailOptIn.findOne( { @@ -90,12 +83,18 @@ export class AdminResolver { ) if (emailOptIn) { if (emailOptIn.updatedAt) { - adminUser.emailConfirmationSend = emailOptIn.updatedAt.toISOString() + emailConfirmationSend = emailOptIn.updatedAt.toISOString() } else { - adminUser.emailConfirmationSend = emailOptIn.createdAt.toISOString() + emailConfirmationSend = emailOptIn.createdAt.toISOString() } } } + const adminUser = new UserAdmin( + user, + await getUserCreations(user.id), + await hasElopageBuys(user.email), + emailConfirmationSend, + ) return adminUser }), ) @@ -106,8 +105,8 @@ export class AdminResolver { } @Authorized([RIGHTS.DELETE_USER]) - @Mutation(() => Boolean) - async deleteUser(@Arg('userId') userId: number, @Ctx() context: any): Promise { + @Mutation(() => Date, { nullable: true }) + async deleteUser(@Arg('userId') userId: number, @Ctx() context: any): Promise { const user = await User.findOne({ id: userId }) // user exists ? if (!user) { @@ -121,12 +120,13 @@ export class AdminResolver { } // soft-delete user await user.softRemove() - return true + const newUser = await User.findOne({ id: userId }, { withDeleted: true }) + return newUser ? newUser.deletedAt : null } @Authorized([RIGHTS.UNDELETE_USER]) - @Mutation(() => Boolean) - async unDeleteUser(@Arg('userId') userId: number): Promise { + @Mutation(() => Date, { nullable: true }) + async unDeleteUser(@Arg('userId') userId: number): Promise { const user = await User.findOne({ id: userId }, { withDeleted: true }) // user exists ? if (!user) { @@ -134,7 +134,8 @@ export class AdminResolver { } // recover user account await user.recover() - return true + return null + } @Authorized([RIGHTS.CREATE_PENDING_CREATION])