mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-14 17:43:04 +00:00
Adds electoral nuclei, leaderships, updates, and WhatsApp invite flows behind campaign auth, plus the consolidated schema migration that Vercel applies on deploy.
122 lines
2.7 KiB
TypeScript
122 lines
2.7 KiB
TypeScript
import type { CollectionConfig } from 'payload'
|
|
|
|
import {
|
|
canCreateCampaignInvite,
|
|
canMutateCampaignInvite,
|
|
canReadCampaignInvite,
|
|
canSetCampaignInviteSystemField,
|
|
} from '@/utilities/campaignAccess'
|
|
import { campaignInviteExpiry } from '@/utilities/campaignInvite'
|
|
|
|
export const CampaignInvite: CollectionConfig = {
|
|
slug: 'campaignInvite',
|
|
labels: {
|
|
singular: 'Convite',
|
|
plural: 'Convites',
|
|
},
|
|
admin: {
|
|
group: 'Campanha',
|
|
useAsTitle: 'leadership',
|
|
defaultColumns: ['leadership', 'kind', 'expiresAt', 'usedAt', 'revokedAt', 'createdAt'],
|
|
},
|
|
access: {
|
|
create: canCreateCampaignInvite,
|
|
read: canReadCampaignInvite,
|
|
update: canMutateCampaignInvite,
|
|
delete: canMutateCampaignInvite,
|
|
},
|
|
indexes: [
|
|
{
|
|
fields: ['leadership', 'kind'],
|
|
},
|
|
],
|
|
fields: [
|
|
{
|
|
name: 'tokenHash',
|
|
type: 'text',
|
|
required: true,
|
|
unique: true,
|
|
index: true,
|
|
admin: {
|
|
hidden: true,
|
|
},
|
|
access: {
|
|
create: canSetCampaignInviteSystemField,
|
|
read: () => false,
|
|
update: canSetCampaignInviteSystemField,
|
|
},
|
|
},
|
|
{
|
|
name: 'leadership',
|
|
type: 'relationship',
|
|
relationTo: 'leadership',
|
|
label: 'Liderança',
|
|
required: true,
|
|
index: true,
|
|
},
|
|
{
|
|
name: 'kind',
|
|
type: 'select',
|
|
label: 'Tipo',
|
|
required: true,
|
|
index: true,
|
|
options: [
|
|
{ label: 'Acesso ao app', value: 'login' },
|
|
{ label: 'Completar cadastro', value: 'autopreenchimento' },
|
|
],
|
|
},
|
|
{
|
|
name: 'expiresAt',
|
|
type: 'date',
|
|
label: 'Expira em',
|
|
required: true,
|
|
index: true,
|
|
defaultValue: () => campaignInviteExpiry().toISOString(),
|
|
access: {
|
|
create: canSetCampaignInviteSystemField,
|
|
update: canSetCampaignInviteSystemField,
|
|
},
|
|
},
|
|
{
|
|
name: 'usedAt',
|
|
type: 'date',
|
|
label: 'Usado em',
|
|
index: true,
|
|
admin: {
|
|
readOnly: true,
|
|
},
|
|
access: {
|
|
create: canSetCampaignInviteSystemField,
|
|
update: canSetCampaignInviteSystemField,
|
|
},
|
|
},
|
|
{
|
|
name: 'revokedAt',
|
|
type: 'date',
|
|
label: 'Revogado em',
|
|
index: true,
|
|
admin: {
|
|
readOnly: true,
|
|
},
|
|
access: {
|
|
create: canSetCampaignInviteSystemField,
|
|
update: canSetCampaignInviteSystemField,
|
|
},
|
|
},
|
|
{
|
|
name: 'createdBy',
|
|
type: 'relationship',
|
|
relationTo: 'campaignUser',
|
|
label: 'Criado por',
|
|
required: true,
|
|
index: true,
|
|
admin: {
|
|
readOnly: true,
|
|
},
|
|
access: {
|
|
create: canSetCampaignInviteSystemField,
|
|
update: canSetCampaignInviteSystemField,
|
|
},
|
|
},
|
|
],
|
|
}
|