diff --git a/packages/server/src/middleware/tests/trimViewRowInfo.spec.ts b/packages/server/src/middleware/tests/trimViewRowInfo.spec.ts index 69d1272df9..17b4cc7b93 100644 --- a/packages/server/src/middleware/tests/trimViewRowInfo.spec.ts +++ b/packages/server/src/middleware/tests/trimViewRowInfo.spec.ts @@ -102,12 +102,13 @@ describe("trimViewRowInfo middleware", () => { address: generator.address(), }) - it("when no columns are defined, same data is returned", async () => { + it("when no columns are defined, don't allow anything", async () => { mockGetView.mockResolvedValue({ version: 2, id: viewId, name: generator.guid(), tableId: table._id!, + schema: {}, }) const data = getRandomData() @@ -116,7 +117,9 @@ describe("trimViewRowInfo middleware", () => { ...data, }) - expect(config.request?.body).toEqual(data) + expect(config.request?.body).toEqual({ + _id: data._id, + }) expect(config.params.sourceId).toEqual(table._id) expect(config.next).toBeCalledTimes(1) @@ -129,7 +132,10 @@ describe("trimViewRowInfo middleware", () => { id: viewId, name: generator.guid(), tableId: table._id!, - columns: ["name", "address"], + schema: { + name: {}, + address: {}, + }, }) const data = getRandomData() diff --git a/packages/server/src/middleware/trimViewRowInfo.ts b/packages/server/src/middleware/trimViewRowInfo.ts index 07e0a344fa..39587d1882 100644 --- a/packages/server/src/middleware/trimViewRowInfo.ts +++ b/packages/server/src/middleware/trimViewRowInfo.ts @@ -23,7 +23,7 @@ export default async (ctx: Ctx, next: Next) => { // don't need to trim delete requests if (ctx?.method?.toLowerCase() !== "delete") { - await trimViewFields(ctx.request.body, viewId, tableId) + await trimViewFields(ctx.request.body, viewId) } ctx.params.sourceId = tableId @@ -34,18 +34,11 @@ export default async (ctx: Ctx, next: Next) => { // have to mutate the koa context, can't return export async function trimViewFields( body: Row, - viewId: string, - tableId: string + viewId: string ): Promise { const view = await sdk.views.get(viewId) - if (!view?.schema || !Object.keys(view.schema).length) { - return - } - - const table = await sdk.tables.getTable(tableId) - const { schema } = sdk.views.enrichSchema(view!, table.schema) const allowedKeys = [ - ...Object.keys(schema), + ...Object.keys(view?.schema || {}), ...db.CONSTANT_EXTERNAL_ROW_COLS, ...db.CONSTANT_INTERNAL_ROW_COLS, ]