Skip to content

TDD — Gateway de operações de usuário

Implementado

Endpoint único userGatewayHttp (POST) para operações de perfil, papéis e mensagens. Usado por ProfileDialog, RoleCatalogService e outros. Ver ADR-0014.

O gateway não tem tela própria — é consumido por componentes da aplicação:

  • ProfileDialog — USER_GET, USER_PROFILE_UPDATE, USER_PREFERENCES_UPDATE, USER_ACTIVE_ROLE_SET, USER_ROLES_AVAILABLE_LIST, USER_ROLE_REQUEST, USER_ROLE_REQUESTS_PENDING, USER_MESSAGES_LIST
  • RegisterPage / HomePage auto-registro — USER_SELF_REGISTER
  • Admin/gestão — USER_CHANGE_STATUS (com meta.reason)
  • Debug (Firestore Command) — pode injetar comandos que acionam o gateway

Observação: Cada ação corresponde a uma operação visível em uma tela; erros retornados são exibidos em SnackBar ou inline conforme o componente.

POST userGatewayHttp

  • Headers: Authorization: Bearer <idToken>
  • Body: { version: "v1", action: string, payload: object, meta: { requestId, targetMinistryId?, reason? } }
  • Response: { ok: boolean, action: string, data: object|null, audit: object, error?: { code, message, details? } }
ActionPayload
USER_GET{}
USER_PROFILE_UPDATE{ name?, aliasName?, phone?, unitId?, avatarImage?, avatarUrl? }
USER_PREFERENCES_UPDATE{ preferences: { appearance?: { skin? }, notifications?, usage? } }
USER_ACTIVE_ROLE_SET{ roleId: string }
USER_ROLES_AVAILABLE_LIST{ unitId?, fullCatalog?: boolean }
USER_ROLE_REQUEST{ roleId, unitId?, reason? }
USER_ROLE_REQUEST_DELETE{ requestId }
USER_ROLE_REQUEST_APPROVE{ requestId, reason? }
USER_ROLE_REQUEST_REJECT{ requestId, reason? }
USER_ROLE_REQUESTS_PENDING{ unitId? }
USER_SELF_REGISTER{ name?, unitId?, ministryId? }
USER_MESSAGES_LIST{}
USER_CHANGE_STATUS{ targetUserId, toStatus, reason } (sensível; exige meta.reason)
  1. Autenticar solicitante
  2. Resolver tenant por domínio
  3. Validar escopo
  4. Autorizar ação por papel
  5. Validar payload
  6. Executar use case
  7. Auditoria
  8. Retornar resposta
  • backend/functions/src/interfaces/http/user-gateway-http-controller.ts
  • backend/functions/src/application/use-cases/process-user-action.ts
  • ADR-0014