ADR-0018 — Papel inicial VISITOR para novas contas
Status
Aprovado
Contexto
Os fluxos de autenticacao permitem que o usuario exista no Firebase Auth antes de concluir a criacao do perfil de dominio no backend.
Sem uma regra canonica de bootstrap de papeis, contas novas podem nascer sem roleAssignments, com activeRole inconsistente, ou com variacao entre fluxos (email, Google e auto registro no primeiro login).
Essa inconsistência afeta:
- autorizacao por escopo e perfil;
- UX de seleção de papel ativo;
- rastreabilidade do estado inicial da conta.
Decisao
Toda nova conta deve iniciar com papel VISITOR, aprovado no ato da criacao.
Regra obrigatoria de bootstrap
Para qualquer fluxo de criacao de conta:
primaryRole = "VISITOR"activeRole = "VISITOR"roleAssignmentsinclui:{ roleId: "VISITOR", status: "APPROVED", lastActionDate: now }
No modelo person embutido:
person.roleAssignmentsincluiVISITORcom:ministryIddo tenant;unitId(quando informado);status = "APPROVED";lastActionDate = now.
Catálogo de roleId
roleId deve ser restrito ao catálogo oficial compartilhado entre backend e frontend, incluindo VISITOR.
Abrangencia de fluxos
A regra vale para:
- criacao via email/senha;
- criacao via Google;
- auto registro (
USER_SELF_REGISTER) no primeiro acesso.
Consequencias
- Elimina contas novas sem papel inicial de dominio.
- Reduz divergencia entre autenticação e perfil de negocio.
- Padroniza a base para evolucao de solicitacao/aprovacao de papeis.
- Exige manutencao sincronizada do catálogo de
roleIdentre backend e frontend.
Integracao com ADRs existentes
- ADR-0003: reforca RBAC com estado inicial consistente.
- ADR-0005: preserva coerencia da entidade de usuario no dominio.
- ADR-0012: mantem escopo por tenant (
inetDomain) no bootstrap do perfil. - ADR-0013: complementa ciclo de vida com papel inicial definido.