From b8b453aba0c3a959f39635cc4168a6a9acf051f4 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Sat, 18 Feb 2023 14:49:12 +0100 Subject: [PATCH] feat: Implement createUser mutation --- .../backend/src/graphql/mutation-resolvers.ts | 2 ++ .../src/graphql/mutations/create-user.ee.ts | 28 +++++++++++++++++++ packages/backend/src/graphql/schema.graphql | 6 ++++ .../backend/src/helpers/authentication.ts | 1 + 4 files changed, 37 insertions(+) create mode 100644 packages/backend/src/graphql/mutations/create-user.ee.ts diff --git a/packages/backend/src/graphql/mutation-resolvers.ts b/packages/backend/src/graphql/mutation-resolvers.ts index 97cec0a4..ecd49dce 100644 --- a/packages/backend/src/graphql/mutation-resolvers.ts +++ b/packages/backend/src/graphql/mutation-resolvers.ts @@ -12,6 +12,7 @@ import deleteFlow from './mutations/delete-flow'; import createStep from './mutations/create-step'; import updateStep from './mutations/update-step'; import deleteStep from './mutations/delete-step'; +import createUser from './mutations/create-user.ee'; import updateUser from './mutations/update-user'; import login from './mutations/login'; @@ -30,6 +31,7 @@ const mutationResolvers = { createStep, updateStep, deleteStep, + createUser, updateUser, login, }; diff --git a/packages/backend/src/graphql/mutations/create-user.ee.ts b/packages/backend/src/graphql/mutations/create-user.ee.ts new file mode 100644 index 00000000..804daf00 --- /dev/null +++ b/packages/backend/src/graphql/mutations/create-user.ee.ts @@ -0,0 +1,28 @@ +import User from '../../models/user'; + +type Params = { + input: { + email: string; + password: string; + }; +}; + +const createUser = async (_parent: unknown, params: Params) => { + const { email, password } = params.input; + + const existingUser = await User.query().findOne({ email }); + + if (existingUser) { + throw new Error('User already exists!'); + } + + const user = await User.query().insert({ + email, + password, + role: 'user', + }); + + return user; +}; + +export default createUser; diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index fecf5ceb..5d95a4de 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -48,6 +48,7 @@ type Mutation { createStep(input: CreateStepInput): Step updateStep(input: UpdateStepInput): Step deleteStep(input: DeleteStepInput): Step + createUser(input: CreateUserInput): User updateUser(input: UpdateUserInput): User login(input: LoginInput): Auth } @@ -300,6 +301,11 @@ input DeleteStepInput { id: String! } +input CreateUserInput { + email: String + password: String +} + input UpdateUserInput { email: String password: String diff --git a/packages/backend/src/helpers/authentication.ts b/packages/backend/src/helpers/authentication.ts index 037f6baa..837a3736 100644 --- a/packages/backend/src/helpers/authentication.ts +++ b/packages/backend/src/helpers/authentication.ts @@ -29,6 +29,7 @@ const authentication = shield( Mutation: { '*': isAuthenticated, login: allow, + createUser: allow, }, }, {