Initial release of Moniki paid services site and CMS (v1.0.0).
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
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',
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user