import type { CollectionConfig } from 'payload' import { ADMIN_GROUP } from '../admin/groups' export const Users: CollectionConfig = { slug: 'users', labels: { singular: 'Пользователь', plural: 'Пользователи' }, auth: { tokenExpiration: 60 * 60 * 24 * 7, cookies: { sameSite: 'Lax', secure: process.env.NODE_ENV === 'production', }, }, admin: { group: ADMIN_GROUP.cabinet, useAsTitle: 'email', defaultColumns: ['email', 'fullName', 'role'], }, fields: [ { name: 'fullName', type: 'text', required: true, label: 'ФИО', }, { name: 'phone', type: 'text', label: 'Телефон', }, { name: 'role', type: 'select', required: true, defaultValue: 'patient', options: [ { label: 'Пациент', value: 'patient' }, { label: 'Врач', value: 'doctor' }, { label: 'Администратор', value: 'admin' }, ], }, { name: 'birthDate', type: 'date', label: 'Дата рождения', }, { name: 'locale', type: 'select', defaultValue: 'ru', options: [ { label: 'Русский', value: 'ru' }, { label: 'English', value: 'en' }, { label: 'Беларуская', value: 'be' }, { label: 'Тоҷикӣ', value: 'tg' }, { label: 'Кыргызча', value: 'ky' }, { label: '中文', value: 'zh' }, ], }, { name: 'smsOptIn', type: 'checkbox', defaultValue: true, label: 'SMS-уведомления (напоминания и переносы)', admin: { description: 'Канал для будущей SMS-рассылки', }, }, { name: 'emailOptIn', type: 'checkbox', defaultValue: true, label: 'Email-уведомления', }, ], access: { create: () => true, read: ({ req: { user } }) => { if (!user) return false if (user.role === 'admin') return true return { id: { equals: user.id } } }, update: ({ req: { user } }) => { if (!user) return false if (user.role === 'admin') return true return { id: { equals: user.id } } }, delete: ({ req: { user } }) => user?.role === 'admin', admin: ({ req: { user } }) => user?.role === 'admin', }, }