import { CollectionConfig } from 'payload'; export const Customers: CollectionConfig = { slug: 'customers', admin: { useAsTitle: 'email', defaultColumns: ['email', 'name', 'stripeCustomerId', 'createdAt'], group: 'E-Commerce', }, fields: [ { name: 'stripeCustomerId', type: 'text', unique: true, required: true, index: true, admin: { readOnly: true, }, }, { name: 'email', type: 'email', required: true, index: true, }, { name: 'name', type: 'text', }, { name: 'user', type: 'relationship', relationTo: 'users', hasMany: false, unique: true, admin: { description: 'Associated user account', }, }, { name: 'metadata', type: 'json', admin: { description: 'Custom Stripe metadata', }, }, { name: 'description', type: 'textarea', }, ], access: { read: ({ req }) => { if (!req.user) { return false; } if (req.user.role === 'admin' || req.user.role === 'super-admin') { return true; } // Users can only read their own customer record return { user: { equals: req.user.id, }, }; }, create: ({ req }) => { return req.user?.role === 'admin' || req.user?.role === 'super-admin'; }, update: ({ req }) => { return req.user?.role === 'admin' || req.user?.role === 'super-admin'; }, delete: ({ req }) => { return req.user?.role === 'super-admin'; }, }, };