Usuários e Funções
Toda ação no GCM é controlada por uma permissão. Registrar uma doação, excluir um membro, disparar uma transmissão de WhatsApp, exportar um relatório — cada uma confere as funções do usuário conectado contra o catálogo de permissões antes que o banco de dados, a edge function ou a interface permita que aconteça. Este módulo é onde você decide quem carrega qual chave.

Usuários vs membros
O GCM mantém esses dois conceitos estritamente separados:
- Um usuário é alguém que pode entrar no GCM. Ele tem um e-mail, uma senha e uma ou mais funções.
- Um membro é alguém da sua congregação. Tem um perfil, histórico de presença, doações — mas a maioria nunca vai entrar no sistema.
Os dois se sobrepõem (um pastor é ambos), mas os módulos não compartilham IDs. Convidar alguém como usuário não o adiciona à sua lista de membros; registrar um membro não cria um login para ele. Isso é intencional: você pode convidar um auditor externo sem poluir a contagem da sua congregação, e pode rastrear uma criança como membro sem nunca emitir credenciais para ela.
Funções vs permissões
O modelo tem três camadas:
- Permissões — verbos pequenos e fixos como
members.create,giving.record,reports.approve. Existem 68 delas, fornecidas pela plataforma. Você não pode adicionar ou renomeá-las. - Funções — pacotes de permissões. Admin, Pastor, Líder, Membro vêm como funções do sistema; você pode criar funções personalizadas (Tesoureiro, Líder de Louvor, Recepcionista de Visitantes) e alternar quais permissões cada uma concede.
- Atribuições — quem tem qual função, opcionalmente limitada a uma fatia da estrutura da sua organização.
Quando alguém tenta fazer algo, a plataforma pergunta: alguma das funções dele inclui essa permissão, e o escopo da atribuição inclui essa linha? Ambos precisam passar.
Dois sabores de admin
Existem três conceitos de administrador e é fácil confundi-los:
| Tipo de admin | Escopo | Para quem |
|---|---|---|
| Admin da organização | Apenas sua igreja | Pastor principal, admin executivo — gere seu espaço de trabalho |
| Platform admin | Todas as igrejas da plataforma | A equipe GCM — trata escalonamentos de suporte |
| Superadmin | Todas as igrejas + pode gerenciar outros platform admins | Os fundadores do GCM — tratam os próprios platform admins |
Apenas o primeiro é atribuível a partir deste módulo. Os outros dois são iniciados pela equipe GCM e protegidos por um trigger de banco de dados que impede a remoção do último superadmin. Se você vir um selo Platform Admin na caixa de diálogo de funções, esse usuário é um membro da nossa equipe ajudando com suporte — não um admin comum.
Onde encontrar cada ferramenta
A página Usuários e Funções tem duas abas:
- Usuários — a lista de usuários conectáveis do seu espaço de trabalho. Convide, edite, suspenda, exclua; alterne quais funções cada usuário tem; atribua-os a unidades organizacionais.
- Funções e Permissões — o catálogo de funções e a grande matriz de permissões. Apenas admins da organização veem esta aba.
Os artigos nesta seção te conduzem por cada tarefa, mais ou menos na ordem em que você fará ao configurar:
- Convidar um usuário — coloque alguém no espaço de trabalho
- Funções padrão explicadas — entenda o que Admin, Pastor, Líder, Membro realmente significam
- Criar uma função personalizada — quando os padrões não servem
- Concedendo permissões — a matriz de 68 chaves e como afiná-la
- Permissões limitadas — restrinja um líder a uma filial
- Registro de auditoria de mudanças de função — quem promoveu quem, e quando
- Recuperando um usuário bloqueado — o que fazer quando alguém não consegue entrar
TIP
Para o início rápido absoluto — convide três colegas e escolha funções em dois minutos — veja Convide sua equipe em Primeiros Passos. Esta seção é a referência mais profunda.
O frontend, as edge functions e o banco de dados — todos conferem
Uma verificação de permissão roda em três lugares:
- A UI esconde botões e itens de barra lateral que você não pode usar, para que o espaço de trabalho não pareça quebrado.
- Edge functions asseguram a permissão com
assertPermission(ctx, "members.write")antes de fazer qualquer coisa sensível. - Row-Level Security no Postgres reconfere cada leitura e gravação contra
has_permission()para que mesmo uma requisição forjada do cliente seja rejeitada.
Você não precisa pensar nisso. Mas é por isso que uma função mal configurada nunca pode vazar dados acidentalmente — há duas camadas de defesa abaixo da tela.
