import type { CollectionConfig } from "payload"; export const Articles: CollectionConfig = { slug: "articles", admin: { useAsTitle: "title", defaultColumns: ["title", "category", "status", "publishedAt"], }, access: { read: ({ req: { user } }) => { if (user) return true; return { status: { equals: "published" } }; }, create: ({ req: { user } }) => user?.role === "admin" || user?.role === "editor", update: ({ req: { user } }) => user?.role === "admin" || user?.role === "editor", delete: ({ req: { user } }) => user?.role === "admin", }, fields: [ { name: "title", type: "text", required: true, }, { name: "slug", type: "text", required: true, unique: true, admin: { position: "sidebar", }, }, { name: "excerpt", type: "textarea", required: true, maxLength: 300, }, { name: "category", type: "select", required: true, options: [ { label: "OIDC / OAuth", value: "oidc-oauth" }, { label: "Zero Trust", value: "zero-trust" }, { label: "Active Directory", value: "active-directory" }, { label: "Entra ID", value: "entra-id" }, { label: "Keycloak", value: "keycloak" }, { label: "Sécurité Générale", value: "security-general" }, { label: "DevSecOps", value: "devsecops" }, ], }, { name: "content", type: "richText", required: true, }, { name: "coverImage", type: "upload", relationTo: "media", }, { name: "status", type: "select", required: true, defaultValue: "draft", options: [ { label: "Brouillon", value: "draft" }, { label: "Publié", value: "published" }, ], admin: { position: "sidebar", }, }, { name: "publishedAt", type: "date", admin: { position: "sidebar", date: { pickerAppearance: "dayAndTime", }, }, }, { name: "tags", type: "array", fields: [ { name: "tag", type: "text", }, ], }, ], };