diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 9896ddc97..a18833d58 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -313,10 +313,10 @@ export class UserResolver { } @Authorized([RIGHTS.CREATE_USER]) - @Mutation(() => String) + @Mutation(() => User) async createUser( @Args() { email, firstName, lastName, language, publisherId }: CreateUserArgs, - ): Promise { + ): Promise { // TODO: wrong default value (should be null), how does graphql work here? Is it an required field? // default int publisher_id = 0; @@ -396,7 +396,7 @@ export class UserResolver { } finally { await queryRunner.release() } - return 'success' + return new User(dbUser) } // THis is used by the admin only - should we move it to the admin resolver? diff --git a/backend/src/seeds/factory/user.ts b/backend/src/seeds/factory/user.ts index 6d81f26a6..ff4c1d6c9 100644 --- a/backend/src/seeds/factory/user.ts +++ b/backend/src/seeds/factory/user.ts @@ -11,36 +11,41 @@ export const userFactory = async ( ): Promise => { const { mutate } = client - await mutate({ mutation: createUser, variables: user }) - let dbUser = await User.findOneOrFail({ where: { email: user.email } }) + const { + data: { + createUser: { id }, + }, + } = await mutate({ mutation: createUser, variables: user }) if (user.emailChecked) { - const optin = await LoginEmailOptIn.findOneOrFail({ where: { userId: dbUser.id } }) + const optin = await LoginEmailOptIn.findOneOrFail({ userId: id }) await mutate({ mutation: setPassword, variables: { password: 'Aa12345_', code: optin.verificationCode }, }) } - // refetch data - dbUser = await User.findOneOrFail({ where: { email: user.email } }) + if (user.createdAt || user.deletedAt || user.isAdmin) { + // get user from database + const dbUser = await User.findOneOrFail({ id }) - if (user.createdAt || user.deletedAt) { - if (user.createdAt) dbUser.createdAt = user.createdAt - if (user.deletedAt) dbUser.deletedAt = user.deletedAt - await dbUser.save() - } + if (user.createdAt || user.deletedAt) { + if (user.createdAt) dbUser.createdAt = user.createdAt + if (user.deletedAt) dbUser.deletedAt = user.deletedAt + await dbUser.save() + } - if (user.isAdmin) { - const admin = new ServerUser() - admin.username = dbUser.firstName - admin.password = 'please_refactor' - admin.email = dbUser.email - admin.role = 'admin' - admin.activated = 1 - admin.lastLogin = new Date() - admin.created = dbUser.createdAt - admin.modified = dbUser.createdAt - await admin.save() + if (user.isAdmin) { + const admin = new ServerUser() + admin.username = dbUser.firstName + admin.password = 'please_refactor' + admin.email = dbUser.email + admin.role = 'admin' + admin.activated = 1 + admin.lastLogin = new Date() + admin.created = dbUser.createdAt + admin.modified = dbUser.createdAt + await admin.save() + } } } diff --git a/backend/src/seeds/graphql/mutations.ts b/backend/src/seeds/graphql/mutations.ts index 32232e410..306f4350b 100644 --- a/backend/src/seeds/graphql/mutations.ts +++ b/backend/src/seeds/graphql/mutations.ts @@ -52,7 +52,9 @@ export const createUser = gql` lastName: $lastName language: $language publisherId: $publisherId - ) + ) { + id + } } ` diff --git a/frontend/src/graphql/mutations.js b/frontend/src/graphql/mutations.js index d4bf8c1da..98905e8d6 100644 --- a/frontend/src/graphql/mutations.js +++ b/frontend/src/graphql/mutations.js @@ -52,7 +52,9 @@ export const createUser = gql` lastName: $lastName language: $language publisherId: $publisherId - ) + ) { + id + } } `