import type { CollectionConfig } from 'payload'
import { isAdmin } from '../access/roles'

export const Users: CollectionConfig = {
  slug: 'users',
  auth: true,
  admin: { useAsTitle: 'email', group: 'System' },
  access: {
    // Only admins manage users; everyone authenticated can read (needed for admin UI).
    create: isAdmin,
    update: isAdmin,
    delete: isAdmin,
    read: ({ req: { user } }) => !!user,
  },
  fields: [
    { name: 'name', type: 'text' },
    {
      name: 'role',
      type: 'select',
      required: true,
      defaultValue: 'editor',
      options: [
        { label: 'Editor (content)', value: 'editor' },
        { label: 'Admin (publishes, owns markets + pricing, manages users)', value: 'admin' },
      ],
      access: {
        // An editor cannot promote themselves to admin.
        update: ({ req: { user } }) => user?.role === 'admin',
      },
    },
  ],
}
