Mini CRM Lead Tracker – Dia 7: CRUD de Empresas e Multi-Tenancy Estrito

No Dia 7 do projeto Mini CRM Lead Tracker, avancei na estrutura corporativa do sistema: implementei o CRUD completo de Empresas (Companies), consolidando o modelo multi-tenant estrito que serve de base para todo o backend.

Essa etapa marca a transição definitiva do projeto para um CRM de padrão enterprise, com segurança em camadas, isolamento de dados e políticas de acesso refinadas. Cada decisão foi tomada com base nas práticas de sistemas como Salesforce, HubSpot e Zoho.

📦 O que foi implementado

  • CRUD completo de empresas (CompanyController)
  • Camada de serviço (CompanyService) com filtragem por company_id
  • Validação com StoreCompanyRequest e UpdateCompanyRequest
  • Formatação de resposta via CompanyResource
  • CompanyPolicy garantindo que apenas administradores possam editar
  • Middleware company.valid protegendo todas as rotas
  • Swagger documentado com exemplos de request e response
  • 30 testes automatizados (unitários e feature) com 100% de cobertura do módulo

🏗️ Arquitetura e Segurança

O projeto segue uma abordagem Defense in Depth (defesa em profundidade):

1️⃣ Middleware - garante que o usuário está ativo e possui empresa
2️⃣ Policy - autoriza apenas quem pertence à mesma empresa
3️⃣ Service - executa queries sempre filtradas por company_id

Esse modelo elimina riscos de vazamento entre locatários e garante total rastreabilidade para auditorias e compliance (LGPD e GDPR).

🚫 Alternativas rejeitadas

O campo company_id é NOT NULL — decisão intencional. Permitir null violaria o princípio de multi-tenancy e aumentaria a superfície de ataque de segurança. Cada usuário precisa estar vinculado a uma empresa.

📘 Documentação e Testes

O Swagger foi atualizado com autenticação Bearer Token, exemplos de payload e responses padronizados. Testes cobrem fluxos de criação, atualização, listagem, autorização e cenários de erro.

“Nenhum sistema é seguro se o isolamento de dados for opcional. Multi-tenancy é sobre responsabilidade, não apenas sobre estrutura.”

📅 Resultado Final

O Mini CRM Lead Tracker agora possui uma fundação corporativa sólida — cada dado pertence a uma empresa e segue o ciclo de segurança completo.
Essa estrutura é a base para o controle de usuários e leads, garantindo rastreabilidade e escalabilidade com segurança.


🧠 Lições do Dia 7

  • Multi-tenancy não é detalhe: é base de segurança.
  • Policies são parte da arquitetura, não apenas “autorização”.
  • Services isolam regras de negócio e aumentam testabilidade.
  • Testes e Swagger são documentação viva.

Diário de Bordo – Dia 7 concluído!
Próximo passo: CRUD de Usuários dentro da Empresa, mantendo o isolamento multi-tenant e adicionando controle de papéis (roles) corporativos.

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *