Skip to content

Autenticação & Usuários

Visão Geral

O sistema usa Laravel Fortify para autenticação headless com views Inertia. Cada tenant tem seus próprios usuários no banco isolado. A autenticação acontece apenas no contexto do tenant (subdomínio).

User Model

Namespace: App\Domain\User\Models\User

CampoTipoDescrição
ulidstringIdentificador público (nunca expor ID)
namestringNome do usuário
emailstringE-mail (unique)
cpfstring(11)CPF (unique, nullable)
ativobooleanConta ativa/inativa
profile_completedbooleanPerfil completo
termo_aceitedatetimeAceite dos termos

Funcionalidades

  • Login com e-mail + senha
  • Registro de novos usuários
  • Reset de senha via e-mail
  • Verificação de e-mail
  • Two-Factor Authentication (TOTP)
  • Toggle ativo/inativo (admin)

Roles e Permissões

Gerenciado via Spatie Permission. O super-admin tem bypass automático via Gate::before.

RoleDescrição
super-adminAcesso total (bypass)
admin-igrejaAdministrador da igreja (todas as permissões)
admin-congregacaoAdmin de congregação específica
secretarioSecretaria (visualização + cadastro)
tesoureiroTesoureiro (financeiro)
lider-grupoLíder de grupo/célula (futuro)
membroMembro comum (acesso limitado)

Permissões (26 total)

DomínioPermissões
Useruser.view, user.create, user.edit, user.delete, user.manage
Churchchurch-profile.view/update, congregation.view/create/update/delete, church-official.assign/remove, reference-data.view/manage
Membermember.view, member.create, member.edit, member.delete
Financefinance.view, finance.create, finance.edit, finance.delete, finance.confirm
Bank Accountbank-account.view, bank-account.manage

Endpoints

MétodoRotaDescrição
GET/usersLista de usuários
POST/usersCriar usuário
GET/users/Detalhes do usuário
PUT/users/Atualizar usuário
DELETE/users/Excluir (anonimiza LGPD)
PATCH/users/{ulid}/toggleAtivar/desativar
PATCH/users/{ulid}/roleAtribuir role
GET/POST/rolesCRUD de roles

Middleware

  • auth — requer autenticação
  • verified — requer e-mail verificado
  • profile.completed — requer perfil completo (redireciona para /settings/profile)