diff --git a/src/collections/Blogs.ts b/src/collections/Blogs.ts index 8714a23..cbfe992 100644 --- a/src/collections/Blogs.ts +++ b/src/collections/Blogs.ts @@ -1,4 +1,5 @@ import formatSlug from "@/utils/payload/formatSlug"; +import setAuthor from "@/utils/payload/setAuthor"; import { lexicalEditor } from "@payloadcms/richtext-lexical"; import type { CollectionConfig } from "payload"; @@ -78,19 +79,23 @@ export const Blogs: CollectionConfig = { name: "createdBy", type: "relationship", relationTo: "users", - hidden: true, - // hooks: { - // beforeChange: [setAuthor], - // }, + hooks: { + beforeChange: [setAuthor], + }, + admin: { + hidden: true, + }, }, { name: "updatedBy", type: "relationship", relationTo: "users", - hidden: true, - // hooks: { - // beforeChange: [setAuthor], - // }, + hooks: { + beforeChange: [setAuthor], + }, + admin: { + hidden: true, + }, }, ], admin: { diff --git a/src/collections/Pages.ts b/src/collections/Pages.ts index f7abf7f..869c4e7 100644 --- a/src/collections/Pages.ts +++ b/src/collections/Pages.ts @@ -8,6 +8,7 @@ import { HorizontalImageContentBlock } from "@/blocks/HorizontalImageContent"; import { ImageSliderBlock } from "@/blocks/ImageSlider"; import { OurTeamBlock } from "@/blocks/OurTeam"; import formatSlug from "@/utils/payload/formatSlug"; +import setAuthor from "@/utils/payload/setAuthor"; import { CollectionConfig } from "payload"; export const Pages: CollectionConfig = { @@ -29,9 +30,6 @@ export const Pages: CollectionConfig = { name: "slug", label: "Page Slug", type: "text", - admin: { - position: "sidebar", - }, hooks: { beforeValidate: [formatSlug("title")], }, @@ -75,6 +73,28 @@ export const Pages: CollectionConfig = { }, ], }, + { + name: "createdBy", + type: "relationship", + relationTo: "users", + hooks: { + beforeChange: [setAuthor], + }, + admin: { + hidden: true, + }, + }, + { + name: "updatedBy", + type: "relationship", + relationTo: "users", + hooks: { + beforeChange: [setAuthor], + }, + admin: { + hidden: true, + }, + }, ], admin: { hideAPIURL: true, diff --git a/src/payload-types.ts b/src/payload-types.ts index 703eae5..15d164f 100644 --- a/src/payload-types.ts +++ b/src/payload-types.ts @@ -306,6 +306,8 @@ export interface Page { description?: string | null; cannonical_url?: string | null; }; + createdBy?: (number | null) | User; + updatedBy?: (number | null) | User; updatedAt: string; createdAt: string; } @@ -747,6 +749,8 @@ export interface PagesSelect { description?: T; cannonical_url?: T; }; + createdBy?: T; + updatedBy?: T; updatedAt?: T; createdAt?: T; } diff --git a/src/utils/payload/setAuthor.ts b/src/utils/payload/setAuthor.ts index 954b436..f14e7e7 100644 --- a/src/utils/payload/setAuthor.ts +++ b/src/utils/payload/setAuthor.ts @@ -1,14 +1,17 @@ import { FieldHook } from "payload"; -const setAuthor: FieldHook = ({ req, operation, data, value }) => { - // if (req.user && !!data) { - // if (operation === "create") { - // data.createdBy = req.user.id; - // } - // data.updatedBy = req.user.id; - // } +const setAuthor: FieldHook = ({ value, req, data, field, operation }) => { + if (req.user && !!data) { + if (operation === "create") { + return req.user.id; + } else { + if (field.name === "updatedBy") { + return req.user.id; + } + } + } - return data; + return value; }; export default setAuthor;