Skip to content

refactor: isola dados de domínio por usuário autenticado - #27

Merged
ifelipelima merged 7 commits into
mainfrom
refactor/user-data-isolation
Oct 24, 2026
Merged

ifelipelima merged 7 commits into
mainfrom
refactor/user-data-isolation

Conversation

@ifelipelima

Copy link
Copy Markdown
Contributor

Descrição

Os endpoints autenticados consultavam recursos globais, permitindo acessar e manipular dados de outros usuários. Este PR restringe grupos, terrenos, rações, ocupações e movimentações de estoque ao usuário autenticado. IDs de recursos alheios retornam 404 com o mesmo contrato de recursos inexistentes.

Alterações

  • Adiciona user_id UUID obrigatório, índices e foreign keys em Group, Terrain e Feed, com associações em User.
  • Vincula novos recursos ao usuário autenticado e restringe buscas, listagens, atualizações e inativações ao relacionamento dele.
  • Mantém filtros, ordenação, paginação e soft delete sobre os scopes do usuário.
  • Protege movimentações e históricos de Occupations pelos recursos pais; Move valida origem e destino, e Open impede combinar proprietários diferentes.
  • Protege a inativação integrada de grupos e as entradas, saídas e histórico de FeedMovements.
  • Preserva transações, locks, transições dos terrenos, validação de estoque e serializers. Occupation e FeedMovement continuam sem user_id próprio.
  • Atualiza factories e cobertura de isolamento entre usuários, incluindo ausência de efeitos nas operações recusadas.
  • Substitui unprocessable_entity por unprocessable_content nos request specs.

Validação

  • Auditoria dos endpoints e acessos aos recursos de domínio: nenhum acesso global indevido identificado.
  • Suíte completa pelo Docker Compose: 386 exemplos, 0 falhas, antes da substituição final do símbolo de status HTTP.
  • Após a substituição: 33 exemplos dos 7 request specs afetados, 0 falhas, sem avisos de depreciação.
  • Consulta somente leitura no banco local: nenhuma ocupação entre proprietários diferentes.

Migration e limites

A migration exige user_id com NOT NULL desde o início. Em ambientes com dados existentes, é necessário definir backfill antes de aplicar a migration.

A consistência de proprietários em Occupation é garantida pelos services. Importações e escritas diretas no banco precisam preservar essa regra.

@ifelipelima
ifelipelima merged commit 1e61dd8 into main Oct 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant