diff --git a/admin/src/graphql/unDeleteUser.js b/admin/src/graphql/unDeleteUser.js index b48c8981f..2c6d603b2 100644 --- a/admin/src/graphql/unDeleteUser.js +++ b/admin/src/graphql/unDeleteUser.js @@ -1,7 +1,7 @@ import gql from 'graphql-tag' export const unDeleteUser = gql` - mutation ($userId: Int!) { + mutation ($userId: Float!) { unDeleteUser(userId: $userId) } ` diff --git a/backend/src/auth/RIGHTS.ts b/backend/src/auth/RIGHTS.ts index b7b23c931..3b3f7580c 100644 --- a/backend/src/auth/RIGHTS.ts +++ b/backend/src/auth/RIGHTS.ts @@ -27,4 +27,5 @@ export enum RIGHTS { CONFIRM_PENDING_CREATION = 'CONFIRM_PENDING_CREATION', SEND_ACTIVATION_EMAIL = 'SEND_ACTIVATION_EMAIL', DELETE_USER = 'DELETE_USER', + UNDELETE_USER = 'UNDELETE_USER', } diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 484fad7d8..0e1002382 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -114,6 +114,19 @@ export class AdminResolver { return true } + @Authorized([RIGHTS.UNDELETE_USER]) + @Mutation(() => Boolean) + async unDeleteUser(@Arg('userId') userId: number): Promise { + const user = await User.findOne({ id: userId }, { withDeleted: true }) + // user exists ? + if (!user) { + throw new Error(`Could not find user with userId: ${userId}`) + } + // recover user account + await user.recover() + return true + } + @Authorized([RIGHTS.CREATE_PENDING_CREATION]) @Mutation(() => [Number]) async createPendingCreation(