import type { CollectionConfig } from 'payload' /** * MITHOME-94 — a /api/contact beérkező üzeneteinek tárolója. * * WHY nincs egyedi `access` blokk: a Payload alapértelmezése (csak * bejelentkezett usernek engedélyezett minden művelet) itt pont a kívánt * viselkedés — az ügyfél az admin felületen látja a beérkezéseket, kívülről * senki nem olvashatja/írhatja a REST API-n keresztül. A src/app/api/contact * route.ts a Local API-t használja (`payload.create`), ami alapból * `overrideAccess: true`-val fut — ez a szerver-oldali írás nem ütközik az * access control-lal, csak a publikus REST hozzáférés van letiltva. * * WHY nincs mezőnkénti hosszkorlát/validáció itt duplikálva: a rate limiting * és a bemenet-validáció (hossz, email formátum, spam-szűrés) szándékosan * az API route-on marad (lásd a ticket leírását) — ez a collection csak a * már ellenőrzött adat tárolója. * * WHY nincs versions/drafts: ez tényadat (egy beérkezett üzenet), nem * szerkesztendő tartalom — a `status` mező követi a feldolgozás állapotát. */ export const ContactSubmissions: CollectionConfig = { slug: 'contact-submissions', admin: { useAsTitle: 'subject', defaultColumns: ['subject', 'name', 'email', 'status', 'createdAt'], group: 'Kapcsolatfelvételek', }, defaultSort: '-createdAt', fields: [ { name: 'name', type: 'text', required: true }, { name: 'email', type: 'text', required: true }, { name: 'subject', type: 'text', required: true }, { name: 'message', type: 'textarea', required: true }, { name: 'gdprConsent', type: 'checkbox', required: true, admin: { description: 'Az űrlapon elfogadott adatkezelési hozzájárulás — a route csak true értékkel enged menteni.', }, }, { name: 'status', type: 'select', required: true, defaultValue: 'new', options: [ { label: 'Új', value: 'new' }, { label: 'Elolvasva', value: 'read' }, { label: 'Megválaszolva', value: 'replied' }, { label: 'Archiválva', value: 'archived' }, ], admin: { description: 'Kézzel karbantartott feldolgozási állapot — a route mindig "new"-ként hozza létre.', }, }, ], }