Appearance
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
| Campo | Tipo | Descrição |
|---|---|---|
| ulid | string | Identificador público (nunca expor ID) |
| name | string | Nome do usuário |
| string | E-mail (unique) | |
| cpf | string(11) | CPF (unique, nullable) |
| ativo | boolean | Conta ativa/inativa |
| profile_completed | boolean | Perfil completo |
| termo_aceite | datetime | Aceite 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.
| Role | Descrição |
|---|---|
| super-admin | Acesso total (bypass) |
| admin-igreja | Administrador da igreja (todas as permissões) |
| admin-congregacao | Admin de congregação específica |
| secretario | Secretaria (visualização + cadastro) |
| tesoureiro | Tesoureiro (financeiro) |
| lider-grupo | Líder de grupo/célula (futuro) |
| membro | Membro comum (acesso limitado) |
Permissões (26 total)
| Domínio | Permissões |
|---|---|
| User | user.view, user.create, user.edit, user.delete, user.manage |
| Church | church-profile.view/update, congregation.view/create/update/delete, church-official.assign/remove, reference-data.view/manage |
| Member | member.view, member.create, member.edit, member.delete |
| Finance | finance.view, finance.create, finance.edit, finance.delete, finance.confirm |
| Bank Account | bank-account.view, bank-account.manage |
Endpoints
| Método | Rota | Descrição |
|---|---|---|
| GET | /users | Lista de usuários |
| POST | /users | Criar usuário |
| GET | /users/ | Detalhes do usuário |
| PUT | /users/ | Atualizar usuário |
| DELETE | /users/ | Excluir (anonimiza LGPD) |
| PATCH | /users/{ulid}/toggle | Ativar/desativar |
| PATCH | /users/{ulid}/role | Atribuir role |
| GET/POST | /roles | CRUD de roles |
Middleware
auth— requer autenticaçãoverified— requer e-mail verificadoprofile.completed— requer perfil completo (redireciona para /settings/profile)