diff --git a/packages/twenty-server/src/engine/core-modules/approved-access-domain/approved-access-domain-exception-filter.ts b/packages/twenty-server/src/engine/core-modules/approved-access-domain/approved-access-domain-exception-filter.ts index ff77e408c..b01aea5f4 100644 --- a/packages/twenty-server/src/engine/core-modules/approved-access-domain/approved-access-domain-exception-filter.ts +++ b/packages/twenty-server/src/engine/core-modules/approved-access-domain/approved-access-domain-exception-filter.ts @@ -18,9 +18,7 @@ export class ApprovedAccessDomainExceptionFilter implements ExceptionFilter { case ApprovedAccessDomainExceptionCode.APPROVED_ACCESS_DOMAIN_ALREADY_VALIDATED: case ApprovedAccessDomainExceptionCode.APPROVED_ACCESS_DOMAIN_MUST_BE_A_COMPANY_DOMAIN: throw new ForbiddenError(exception.message, { - extensions: { - userFriendlyMessage: exception.userFriendlyMessage, - }, + userFriendlyMessage: exception.userFriendlyMessage, }); default: { const _exhaustiveCheck: never = exception.code; diff --git a/packages/twenty-server/src/engine/core-modules/graphql/utils/graphql-errors.util.ts b/packages/twenty-server/src/engine/core-modules/graphql/utils/graphql-errors.util.ts index 81262c1be..f5adccadf 100644 --- a/packages/twenty-server/src/engine/core-modules/graphql/utils/graphql-errors.util.ts +++ b/packages/twenty-server/src/engine/core-modules/graphql/utils/graphql-errors.util.ts @@ -30,6 +30,11 @@ export enum ErrorCode { INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR', } +type RestrictedGraphQLErrorExtensions = { + userFriendlyMessage?: string; + subCode?: string; +}; + export class BaseGraphQLError extends GraphQLError { // eslint-disable-next-line @typescript-eslint/no-explicit-any public extensions: Record; @@ -110,7 +115,7 @@ export class ValidationError extends BaseGraphQLError { export class AuthenticationError extends BaseGraphQLError { // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(message: string, extensions?: Record) { + constructor(message: string, extensions?: RestrictedGraphQLErrorExtensions) { super(message, ErrorCode.UNAUTHENTICATED, extensions); Object.defineProperty(this, 'name', { value: 'AuthenticationError' }); @@ -119,7 +124,7 @@ export class AuthenticationError extends BaseGraphQLError { export class ForbiddenError extends BaseGraphQLError { // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(message: string, extensions?: Record) { + constructor(message: string, extensions?: RestrictedGraphQLErrorExtensions) { super(message, ErrorCode.FORBIDDEN, extensions); Object.defineProperty(this, 'name', { value: 'ForbiddenError' }); @@ -151,7 +156,7 @@ export class PersistedQueryNotSupportedError extends BaseGraphQLError { export class UserInputError extends BaseGraphQLError { // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(message: string, extensions?: Record) { + constructor(message: string, extensions?: RestrictedGraphQLErrorExtensions) { super(message, ErrorCode.BAD_USER_INPUT, extensions); Object.defineProperty(this, 'name', { value: 'UserInputError' }); @@ -160,7 +165,7 @@ export class UserInputError extends BaseGraphQLError { export class NotFoundError extends BaseGraphQLError { // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(message: string, extensions?: Record) { + constructor(message: string, extensions?: RestrictedGraphQLErrorExtensions) { super(message, ErrorCode.NOT_FOUND, extensions); Object.defineProperty(this, 'name', { value: 'NotFoundError' }); @@ -177,7 +182,7 @@ export class MethodNotAllowedError extends BaseGraphQLError { export class ConflictError extends BaseGraphQLError { // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(message: string, extensions?: Record) { + constructor(message: string, extensions?: RestrictedGraphQLErrorExtensions) { super(message, ErrorCode.CONFLICT, extensions); Object.defineProperty(this, 'name', { value: 'ConflictError' }); diff --git a/packages/twenty-server/src/engine/core-modules/workflow/filters/workflow-trigger-graphql-api-exception.filter.ts b/packages/twenty-server/src/engine/core-modules/workflow/filters/workflow-trigger-graphql-api-exception.filter.ts index cf20f77a4..29fff2dca 100644 --- a/packages/twenty-server/src/engine/core-modules/workflow/filters/workflow-trigger-graphql-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/core-modules/workflow/filters/workflow-trigger-graphql-api-exception.filter.ts @@ -20,15 +20,11 @@ export const handleWorkflowTriggerException = ( case WorkflowTriggerExceptionCode.INVALID_WORKFLOW_STATUS: case WorkflowTriggerExceptionCode.FORBIDDEN: throw new UserInputError(exception.message, { - extensions: { - userFriendlyMessage: exception.userFriendlyMessage, - }, + userFriendlyMessage: exception.userFriendlyMessage, }); case WorkflowTriggerExceptionCode.NOT_FOUND: throw new NotFoundError(exception.message, { - extensions: { - userFriendlyMessage: exception.userFriendlyMessage, - }, + userFriendlyMessage: exception.userFriendlyMessage, }); case WorkflowTriggerExceptionCode.INTERNAL_ERROR: throw exception;