📌 Documentação do Arquivo Colaboradores.ts
O arquivo Colaboradores.ts
pertence à pasta collections
e define a coleção Colaboradores
. Essa coleção é responsável por armazenar informações dos colaboradores que fazem parte do sistema.
🎯 Objetivo da Coleção
A coleção Colaboradores
permite o gerenciamento de informações essenciais, como nome, foto, função, links de redes sociais e uma breve descrição. Também define permissões de acesso para cada colaborador.
⚙️ Configuração da Coleção
Abaixo está a definição da coleção, incluindo seu slug
, rótulos e regras de acesso:
import { isAdmin } from '@/access/isAdmin'
import { isAdminOrCreatedBy } from '@/access/isAdminOrCreatedBy'
import type { CollectionConfig } from 'payload'
export const Colaboradores: CollectionConfig = {
slug: 'colaboradores',
labels: {
singular: 'Colaborador',
plural: 'Colaboradores',
},
admin: {
useAsTitle: 'email',
},
access: {
read: () => true,
create: isAdmin,
update: isAdminOrCreatedBy,
delete: isAdmin,
},
auth: true,
fields: [
...
],
hooks: {},
}
🏷️ Explicação
slug
: Define o identificador único da coleção.labels
: Personaliza os rótulos da coleção no painel administrativo.admin.useAsTitle
: Define o campo principal a ser exibido no painel (neste caso, o email do colaborador).access
: Controla as permissões:read
: Qualquer usuário pode visualizar os dados.create
: Somente administradores podem criar novos registros.update
: Apenas administradores ou o próprio criador podem editar.delete
: Apenas administradores podem excluir registros.
auth
: Define se a autenticação será necessária para acessar a coleção.
🛠️ Campos da Coleção
A coleção Colaboradores
possui os seguintes campos:
🏷️ 1. Role (Função do Colaborador)
{
name: 'role',
type: 'select',
options: [
{ label: 'Editor', value: 'editor' },
{ label: 'Admin', value: 'admin' },
],
required: true,
defaultValue: 'editor',
}
- Função do colaborador no sistema.
- Pode ser
Editor
ouAdmin
. - O valor padrão é
editor
.
📛 2. Nome Completo
{
name: 'nomeCompleto',
type: 'text',
required: true,
maxLength: 100,
}
- Campo obrigatório com limite de 100 caracteres.
- Armazena o nome completo do colaborador.
🖼️ 3. Foto do Colaborador
{
name: 'foto',
type: 'upload',
relationTo: 'media',
required: true,
}
- Campo obrigatório para armazenar uma foto do colaborador.
- O arquivo deve estar relacionado à coleção
media
.
📝 4. Descrição Breve
{
name: 'descricao',
label: 'Descrição Breve',
type: 'textarea',
required: true,
maxLength: 1000,
}
- Campo obrigatório com limite de 1000 caracteres.
- Permite incluir uma breve descrição sobre o colaborador.
📹 5. Link do YouTube
{
name: 'youtubeLink',
type: 'text',
maxLength: 255,
}
- Campo opcional para armazenar o link do canal do YouTube do colaborador.
- Limite de 255 caracteres.
📸 6. Link do Instagram
{
name: 'instagramLink',
type: 'text',
maxLength: 255,
}
- Campo opcional para armazenar o link do Instagram do colaborador.
- Limite de 255 caracteres.
🌍 7. Link do Site Pessoal
{
name: 'siteLink',
type: 'text',
maxLength: 255,
}
- Campo opcional para armazenar o link do site pessoal do colaborador.
- Limite de 255 caracteres.
🏷️ 8. Tags (Relacionamento com Outras Coleções)
{
name: 'tags',
label: 'Tags',
type: 'relationship',
relationTo: 'tags',
hasMany: true,
}
- Permite associar múltiplas tags ao colaborador.
- Relaciona-se à coleção
tags
.
📌 Código Completo
Aqui está o código completo do arquivo Colaboradores.ts
:
import { isAdmin } from '@/access/isAdmin'
import { isAdminOrCreatedBy } from '@/access/isAdminOrCreatedBy'
import type { CollectionConfig } from 'payload'
export const Colaboradores: CollectionConfig = {
slug: 'colaboradores',
labels: {
singular: 'Colaborador',
plural: 'Colaboradores',
},
admin: {
useAsTitle: 'email',
},
access: {
read: () => true,
create: isAdmin,
update: isAdminOrCreatedBy,
delete: isAdmin,
},
auth: true,
fields: [
{
name: 'role',
type: 'select',
options: [
{ label: 'Editor', value: 'editor' },
{ label: 'Admin', value: 'admin' },
],
required: true,
defaultValue: 'editor',
},
{
name: 'nomeCompleto',
type: 'text',
required: true,
maxLength: 100,
},
{
name: 'foto',
type: 'upload',
relationTo: 'media',
required: true,
},
{
name: 'descricao',
label: 'Descrição Breve',
type: 'textarea',
required: true,
maxLength: 1000,
},
{
name: 'youtubeLink',
type: 'text',
maxLength: 255,
},
{
name: 'instagramLink',
type: 'text',
maxLength: 255,
},
{
name: 'siteLink',
type: 'text',
maxLength: 255,
},
{
name: 'tags',
label: 'Tags',
type: 'relationship',
relationTo: 'tags',
hasMany: true,
},
],
hooks: {},
}
🔥 Considerações Finais
A coleção Colaboradores
foi projetada para armazenar informações essenciais dos colaboradores do sistema, garantindo que cada um tenha uma função específica e possa compartilhar links relevantes. O sistema de permissões assegura que apenas usuários autorizados possam modificar os dados. 🚀