refactor(auth): add workspaces selection (#12098)

This commit is contained in:
Antoine Moreaux
2025-06-13 16:17:35 +02:00
committed by GitHub
parent 836e2f792c
commit b1af98f93d
162 changed files with 3542 additions and 1340 deletions

View File

@ -17,6 +17,7 @@ import {
WorkflowVersionWorkspaceEntity,
} from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
@WorkspaceQueryHook({
key: `workflow.createMany`,
@ -38,6 +39,10 @@ export class WorkflowCreateManyPostQueryHook
_objectName: string,
payload: WorkflowWorkspaceEntity[],
): Promise<void> {
const workspace = authContext.workspace;
workspaceValidator.assertIsDefinedOrThrow(workspace);
const workflowVersionRepository =
await this.twentyORMManager.getRepository<WorkflowVersionWorkspaceEntity>(
'workflowVersion',
@ -49,7 +54,7 @@ export class WorkflowCreateManyPostQueryHook
isCustom: false,
nameSingular: 'workflowVersion',
},
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
});
const workflowVersionsToCreate = payload.map((workflow) => {
@ -70,7 +75,7 @@ export class WorkflowCreateManyPostQueryHook
const objectMetadata = await this.objectMetadataRepository.findOneOrFail({
where: {
nameSingular: 'workflowVersion',
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
},
});
@ -87,7 +92,7 @@ export class WorkflowCreateManyPostQueryHook
},
};
}),
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
});
}
}

View File

@ -17,6 +17,7 @@ import {
WorkflowVersionWorkspaceEntity,
} from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
@WorkspaceQueryHook({
key: `workflow.createOne`,
@ -38,6 +39,10 @@ export class WorkflowCreateOnePostQueryHook
_objectName: string,
payload: WorkflowWorkspaceEntity[],
): Promise<void> {
const workspace = authContext.workspace;
workspaceValidator.assertIsDefinedOrThrow(workspace);
const workflow = payload[0];
const workflowVersionRepository =
@ -51,7 +56,7 @@ export class WorkflowCreateOnePostQueryHook
isCustom: false,
nameSingular: 'workflowVersion',
},
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
});
const workflowVersionToCreate = await workflowVersionRepository.create({
@ -66,7 +71,7 @@ export class WorkflowCreateOnePostQueryHook
const objectMetadata = await this.objectMetadataRepository.findOneOrFail({
where: {
nameSingular: 'workflowVersion',
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
},
});
@ -83,7 +88,7 @@ export class WorkflowCreateOnePostQueryHook
},
},
],
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
});
}
}

View File

@ -5,6 +5,7 @@ import { WorkspaceQueryHookType } from 'src/engine/api/graphql/workspace-query-r
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
@WorkspaceQueryHook({
key: `workflow.deleteMany`,
@ -22,9 +23,13 @@ export class WorkflowDeleteManyPostQueryHook
_objectName: string,
payload: WorkflowWorkspaceEntity[],
): Promise<void> {
const workspace = authContext.workspace;
workspaceValidator.assertIsDefinedOrThrow(workspace);
await this.workflowCommonWorkspaceService.handleWorkflowSubEntities({
workflowIds: payload.map((workflow) => workflow.id),
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
operation: 'delete',
});
}

View File

@ -5,6 +5,7 @@ import { WorkspaceQueryHookType } from 'src/engine/api/graphql/workspace-query-r
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
@WorkspaceQueryHook({
key: `workflow.deleteOne`,
@ -22,9 +23,13 @@ export class WorkflowDeleteOnePostQueryHook
_objectName: string,
payload: WorkflowWorkspaceEntity[],
): Promise<void> {
const workspace = authContext.workspace;
workspaceValidator.assertIsDefinedOrThrow(workspace);
await this.workflowCommonWorkspaceService.handleWorkflowSubEntities({
workflowIds: payload.map((workflow) => workflow.id),
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
operation: 'delete',
});
}

View File

@ -4,6 +4,7 @@ import { DestroyManyResolverArgs } from 'src/engine/api/graphql/workspace-resolv
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
@WorkspaceQueryHook('workflow.destroyMany')
export class WorkflowDestroyManyPreQueryHook
@ -18,9 +19,13 @@ export class WorkflowDestroyManyPreQueryHook
_objectName: string,
payload: DestroyManyResolverArgs<{ id: { in: string[] } }>,
): Promise<DestroyManyResolverArgs<{ id: { in: string[] } }>> {
const workspace = authContext.workspace;
workspaceValidator.assertIsDefinedOrThrow(workspace);
await this.workflowCommonWorkspaceService.handleWorkflowSubEntities({
workflowIds: payload.filter.id.in,
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
operation: 'destroy',
});

View File

@ -4,6 +4,7 @@ import { DestroyOneResolverArgs } from 'src/engine/api/graphql/workspace-resolve
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
@WorkspaceQueryHook('workflow.destroyOne')
export class WorkflowDestroyOnePreQueryHook
@ -18,9 +19,13 @@ export class WorkflowDestroyOnePreQueryHook
_objectName: string,
payload: DestroyOneResolverArgs,
): Promise<DestroyOneResolverArgs> {
const workspace = authContext.workspace;
workspaceValidator.assertIsDefinedOrThrow(workspace);
await this.workflowCommonWorkspaceService.handleWorkflowSubEntities({
workflowIds: [payload.id],
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
operation: 'destroy',
});

View File

@ -5,6 +5,7 @@ import { WorkspaceQueryHookType } from 'src/engine/api/graphql/workspace-query-r
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
@WorkspaceQueryHook({
key: 'workflow.restoreMany',
@ -22,9 +23,13 @@ export class WorkflowRestoreManyPostQueryHook
_objectName: string,
payload: WorkflowWorkspaceEntity[],
): Promise<void> {
const workspace = authContext.workspace;
workspaceValidator.assertIsDefinedOrThrow(workspace);
await this.workflowCommonWorkspaceService.handleWorkflowSubEntities({
workflowIds: payload.map((workflow) => workflow.id),
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
operation: 'restore',
});
}

View File

@ -5,6 +5,7 @@ import { WorkspaceQueryHookType } from 'src/engine/api/graphql/workspace-query-r
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
@WorkspaceQueryHook({
key: 'workflow.restoreOne',
@ -22,9 +23,13 @@ export class WorkflowRestoreOnePostQueryHook
_objectName: string,
payload: WorkflowWorkspaceEntity[],
): Promise<void> {
const workspace = authContext.workspace;
workspaceValidator.assertIsDefinedOrThrow(workspace);
await this.workflowCommonWorkspaceService.handleWorkflowSubEntities({
workflowIds: payload.map((workflow) => workflow.id),
workspaceId: authContext.workspace.id,
workspaceId: workspace.id,
operation: 'restore',
});
}

View File

@ -4,6 +4,7 @@ import { DeleteOneResolverArgs } from 'src/engine/api/graphql/workspace-resolver
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-version-validation.workspace-service';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
@WorkspaceQueryHook(`workflowVersion.deleteOne`)
export class WorkflowVersionDeleteOnePreQueryHook
@ -20,6 +21,8 @@ export class WorkflowVersionDeleteOnePreQueryHook
): Promise<DeleteOneResolverArgs> {
const { workspace } = authContext;
workspaceValidator.assertIsDefinedOrThrow(workspace);
await this.workflowVersionValidationWorkspaceService.validateWorkflowVersionForDeleteOne(
workspace.id,
payload,

View File

@ -5,6 +5,7 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-version-validation.workspace-service';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
@WorkspaceQueryHook(`workflowVersion.updateOne`)
export class WorkflowVersionUpdateOnePreQueryHook
@ -21,6 +22,8 @@ export class WorkflowVersionUpdateOnePreQueryHook
): Promise<UpdateOneResolverArgs<WorkflowVersionWorkspaceEntity>> {
const { workspace } = authContext;
workspaceValidator.assertIsDefinedOrThrow(workspace);
await this.workflowVersionValidationWorkspaceService.validateWorkflowVersionForUpdateOne(
{
workspaceId: workspace.id,