import { type CollectionConfig, type AccessArgs } from 'payload'; function isSelfOrAdmin({ req }: AccessArgs) { if (req.user?.role === 'superadmin') return true; if (req.user?.role === 'admin') return { id: { equals: req.user?.id } }; return false; } export const Users: CollectionConfig = { slug: 'users', labels: { singular: 'Benutzer', plural: 'Benutzer' }, admin: { useAsTitle: 'fullName', group: 'System', description: 'Benutzer verwalten', defaultColumns: [ 'id', 'fullName', 'email', 'role' ], hideAPIURL: true }, access: { read: isSelfOrAdmin, create: ({ req }) => req.user?.role === 'superadmin', update: isSelfOrAdmin, delete: ({ req }) => req.user?.role === 'superadmin' }, auth: true, fields: [ { name: 'firstName', label: 'Vorname', type: 'text', required: true }, { name: 'lastName', label: 'Nachname', type: 'text', required: true }, { name: 'role', label: 'Rolle', type: 'select', required: true, access: { update: ({ req }) => req.user?.role === 'superadmin' }, options: [ { label: 'Super-Admin (GSH)', value: 'superadmin' }, { label: 'Administrator', value: 'admin' } ] }, { name: 'fullName', label: 'Name', type: 'text', admin: { hidden: true, readOnly: true }, hooks: { beforeChange: [ ({ data }) => `${data?.firstName} ${data?.lastName}` ] } } ] };