From f494a04177feaf3efff97cc9eb9d8acfcf58dda4 Mon Sep 17 00:00:00 2001 From: adrians5j Date: Mon, 29 Jan 2024 15:05:47 +0100 Subject: [PATCH] fix: sanitize date/time-related fields in publishing-related entry factories --- .../createPublishEntryData.ts | 21 ++++++++++--------- .../createRepublishEntryData.ts | 17 ++++++++------- .../createUnpublishEntryData.ts | 9 ++++---- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createPublishEntryData.ts b/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createPublishEntryData.ts index 458d7f2115b..c0e5a9f691d 100644 --- a/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createPublishEntryData.ts +++ b/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createPublishEntryData.ts @@ -3,6 +3,7 @@ import { STATUS_PUBLISHED } from "./statuses"; import { SecurityIdentity } from "@webiny/api-security/types"; import { validateModelEntryDataOrThrow } from "~/crud/contentEntry/entryDataValidation"; import { getIdentity } from "~/utils/identity"; +import { getDate } from "~/utils/date"; type CreatePublishEntryDataParams = { model: CmsModel; @@ -39,11 +40,11 @@ export const createPublishEntryData = async ({ /** * Entry-level meta fields. 👇 */ - createdOn: latestEntry.createdOn, - modifiedOn: currentDateTime, - savedOn: currentDateTime, - firstPublishedOn: latestEntry.firstPublishedOn || currentDateTime, - lastPublishedOn: currentDateTime, + createdOn: getDate(latestEntry.createdOn), + modifiedOn: getDate(currentDateTime), + savedOn: getDate(currentDateTime), + firstPublishedOn: getDate(latestEntry.firstPublishedOn, currentDateTime), + lastPublishedOn: getDate(currentDateTime), createdBy: getIdentity(latestEntry.createdBy), modifiedBy: getIdentity(currentIdentity), savedBy: getIdentity(currentIdentity), @@ -53,11 +54,11 @@ export const createPublishEntryData = async ({ /** * Revision-level meta fields. 👇 */ - revisionCreatedOn: originalEntry.revisionCreatedOn, - revisionSavedOn: currentDateTime, - revisionModifiedOn: currentDateTime, - revisionFirstPublishedOn: originalEntry.revisionFirstPublishedOn || currentDateTime, - revisionLastPublishedOn: currentDateTime, + revisionCreatedOn: getDate(originalEntry.revisionCreatedOn), + revisionSavedOn: getDate(currentDateTime), + revisionModifiedOn: getDate(currentDateTime), + revisionFirstPublishedOn: getDate(originalEntry.revisionFirstPublishedOn, currentDateTime), + revisionLastPublishedOn: getDate(currentDateTime), revisionCreatedBy: getIdentity(originalEntry.revisionCreatedBy), revisionSavedBy: getIdentity(currentIdentity), revisionModifiedBy: getIdentity(currentIdentity), diff --git a/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createRepublishEntryData.ts b/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createRepublishEntryData.ts index 77925a85289..1572b00b8dd 100644 --- a/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createRepublishEntryData.ts +++ b/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createRepublishEntryData.ts @@ -3,6 +3,7 @@ import { referenceFieldsMapping } from "~/crud/contentEntry/referenceFieldsMappi import { STATUS_PUBLISHED } from "./statuses"; import { SecurityIdentity } from "@webiny/api-security/types"; import { getIdentity } from "~/utils/identity"; +import { getDate } from "~/utils/date"; type CreateRepublishEntryDataParams = { model: CmsModel; @@ -36,28 +37,28 @@ export const createRepublishEntryData = async ({ /** * Entry-level meta fields. 👇 */ - savedOn: currentDateTime, - modifiedOn: currentDateTime, + savedOn: getDate(currentDateTime), + modifiedOn: getDate(currentDateTime), savedBy: getIdentity(currentIdentity), modifiedBy: getIdentity(currentIdentity), - firstPublishedOn: originalEntry.firstPublishedOn || currentDateTime, + firstPublishedOn: getDate(originalEntry.firstPublishedOn, currentDateTime), firstPublishedBy: getIdentity(originalEntry.firstPublishedBy, currentIdentity), - lastPublishedOn: currentDateTime, + lastPublishedOn: getDate(currentDateTime), lastPublishedBy: getIdentity(currentIdentity), /** * Revision-level meta fields. 👇 */ - revisionSavedOn: currentDateTime, - revisionModifiedOn: currentDateTime, + revisionSavedOn: getDate(currentDateTime), + revisionModifiedOn: getDate(currentDateTime), revisionSavedBy: getIdentity(currentIdentity), revisionModifiedBy: getIdentity(currentIdentity), - revisionFirstPublishedOn: originalEntry.revisionFirstPublishedOn || currentDateTime, + revisionFirstPublishedOn: getDate(originalEntry.revisionFirstPublishedOn, currentDateTime), revisionFirstPublishedBy: getIdentity( originalEntry.revisionFirstPublishedBy, currentIdentity ), - revisionLastPublishedOn: currentDateTime, + revisionLastPublishedOn: getDate(currentDateTime), revisionLastPublishedBy: getIdentity(currentIdentity), webinyVersion: context.WEBINY_VERSION, diff --git a/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createUnpublishEntryData.ts b/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createUnpublishEntryData.ts index 3d7751adafb..3843fa3afaf 100644 --- a/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createUnpublishEntryData.ts +++ b/packages/api-headless-cms/src/crud/contentEntry/entryDataFactories/createUnpublishEntryData.ts @@ -2,6 +2,7 @@ import { CmsContext, CmsEntry, CmsModel } from "~/types"; import { STATUS_UNPUBLISHED } from "./statuses"; import { SecurityIdentity } from "@webiny/api-security/types"; import { getIdentity } from "~/utils/identity"; +import { getDate } from "~/utils/date"; type CreateRepublishEntryDataParams = { model: CmsModel; @@ -26,16 +27,16 @@ export const createUnpublishEntryData = async ({ /** * Entry-level meta fields. 👇 */ - savedOn: currentDateTime, - modifiedOn: currentDateTime, + savedOn: getDate(currentDateTime), + modifiedOn: getDate(currentDateTime), savedBy: getIdentity(currentIdentity), modifiedBy: getIdentity(currentIdentity), /** * Revision-level meta fields. 👇 */ - revisionSavedOn: currentDateTime, - revisionModifiedOn: currentDateTime, + revisionSavedOn: getDate(currentDateTime), + revisionModifiedOn: getDate(currentDateTime), revisionSavedBy: getIdentity(currentIdentity), revisionModifiedBy: getIdentity(currentIdentity) };