From 934a52589811a7716ed6f74a5fe54bc62cdbc23c Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Mon, 7 Aug 2023 16:14:42 +0200 Subject: [PATCH] feat: Add updateSamlAuthProvider graphQL mutation --- .../backend/src/graphql/mutation-resolvers.ts | 2 + .../mutations/update-saml-auth-provider.ee.ts | 45 +++++++++++++++++++ packages/backend/src/graphql/schema.graphql | 15 +++++++ 3 files changed, 62 insertions(+) create mode 100644 packages/backend/src/graphql/mutations/update-saml-auth-provider.ee.ts diff --git a/packages/backend/src/graphql/mutation-resolvers.ts b/packages/backend/src/graphql/mutation-resolvers.ts index 5411cc05..76d48baa 100644 --- a/packages/backend/src/graphql/mutation-resolvers.ts +++ b/packages/backend/src/graphql/mutation-resolvers.ts @@ -26,6 +26,7 @@ import updateStep from './mutations/update-step'; import updateUser from './mutations/update-user.ee'; import verifyConnection from './mutations/verify-connection'; import createSamlAuthProvider from './mutations/create-saml-auth-provider.ee'; +import updateSamlAuthProvider from './mutations/update-saml-auth-provider.ee'; const mutationResolvers = { createConnection, @@ -56,6 +57,7 @@ const mutationResolvers = { updateStep, verifyConnection, createSamlAuthProvider, + updateSamlAuthProvider, }; export default mutationResolvers; diff --git a/packages/backend/src/graphql/mutations/update-saml-auth-provider.ee.ts b/packages/backend/src/graphql/mutations/update-saml-auth-provider.ee.ts new file mode 100644 index 00000000..d6e2974b --- /dev/null +++ b/packages/backend/src/graphql/mutations/update-saml-auth-provider.ee.ts @@ -0,0 +1,45 @@ +import type { SamlConfig } from '@node-saml/passport-saml'; +import SamlAuthProvider from '../../models/saml-auth-provider.ee'; +import Context from '../../types/express/context'; + +type Params = { + input: { + name: string; + certificate: string; + signatureAlgorithm: SamlConfig['signatureAlgorithm']; + issuer: string; + entryPoint: string; + firstnameAttributeName: string; + surnameAttributeName: string; + emailAttributeName: string; + roleAttributeName: string; + defaultRoleId: string; + active: boolean; + }; +}; + +const updateSamlAuthProvider = async ( + _parent: unknown, + params: Params, + context: Context +) => { + context.currentUser.can('update', 'SamlAuthProvider'); + + const samlAuthProviderPayload: Partial = { + ...params.input, + }; + + const existingSamlAuthProvider = await SamlAuthProvider.query() + .limit(1) + .first() + .throwIfNotFound(); + + const samlAuthProvider = await SamlAuthProvider.query().patchAndFetchById( + existingSamlAuthProvider.id, + samlAuthProviderPayload + ); + + return samlAuthProvider; +}; + +export default updateSamlAuthProvider; diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index 87a28d16..d2c03fa0 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -79,6 +79,7 @@ type Mutation { updateUser(input: UpdateUserInput): User verifyConnection(input: VerifyConnectionInput): Connection createSamlAuthProvider(input: CreateSamlAuthProviderInput): SamlAuthProvider + updateSamlAuthProvider(input: UpdateSamlAuthProviderInput): SamlAuthProvider } """ @@ -349,6 +350,20 @@ input CreateSamlAuthProviderInput { active: Boolean! } +input UpdateSamlAuthProviderInput { + name: String! + certificate: String! + signatureAlgorithm: String! + issuer: String! + entryPoint: String! + firstnameAttributeName: String! + surnameAttributeName: String! + emailAttributeName: String! + roleAttributeName: String! + defaultRoleId: String! + active: Boolean! +} + input DeleteConnectionInput { id: String! }