From ca1c7a98015d64c83eef11f305b9dfe4d6496aba Mon Sep 17 00:00:00 2001 From: "n8n-cat-bot[bot]" Date: Mon, 28 Sep 2026 10:21:25 +0000 Subject: [PATCH] fix(core): Validate data table sort columns --- .../cli/src/modules/data-table/data-table.controller.ts | 2 ++ .../cli/src/modules/data-table/data-table.service.ts | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/packages/cli/src/modules/data-table/data-table.controller.ts b/packages/cli/src/modules/data-table/data-table.controller.ts index 5022fb4bc48..5794761491c 100644 --- a/packages/cli/src/modules/data-table/data-table.controller.ts +++ b/packages/cli/src/modules/data-table/data-table.controller.ts @@ -299,6 +299,8 @@ export class DataTableController { } catch (e: unknown) { if (e instanceof DataTableNotFoundError) { throw new NotFoundError(e.message); + } else if (e instanceof DataTableValidationError) { + throw new BadRequestError(e.message); } else if (e instanceof Error) { throw new InternalServerError(e.message, e); } else { diff --git a/packages/cli/src/modules/data-table/data-table.service.ts b/packages/cli/src/modules/data-table/data-table.service.ts index 23f4d12a0b1..59903a2bd7c 100644 --- a/packages/cli/src/modules/data-table/data-table.service.ts +++ b/packages/cli/src/modules/data-table/data-table.service.ts @@ -335,6 +335,15 @@ export class DataTableService { return await this.dataTableColumnRepository.manager.transaction(async (em) => { const columns = await this.dataTableColumnRepository.getColumns(dataTableId, em); + if (dto.sortBy) { + const [sortColumn] = dto.sortBy; + if ( + !columns.some(({ name }) => name === sortColumn) && + !Object.hasOwn(DATA_TABLE_SYSTEM_COLUMN_TYPE_MAP, sortColumn) + ) { + throw new DataTableValidationError(`unknown column name '${sortColumn}'`); + } + } const transformedDto = dto.filter ? { ...dto, filter: this.validateAndTransformFilters(dto.filter, columns) } : dto;