ValwispDocs
Desarrolladores

Multi-tenancy

Cada ISP es un Tenant aislado — la regla no negociable de toda consulta a base de datos.

Valwisp es multi-tenant: cada distribuidor de internet (ISP) que usa la plataforma es un Tenant. La regla fundamental del proyecto es:

Toda consulta a base de datos debe incluir tenantId.

De dónde sale el tenantId

Viaja en el payload del JWT ({ sub, tenantId, role }, ver Autenticación) y se extrae con el decorador @TenantId() en cualquier controller que lo necesite — no se acepta como parámetro de query/body confiando en el cliente, siempre sale del token verificado.

Aislamiento

  • Cada modelo de negocio en el schema de Prisma (Client, InternetService, Invoice, Router, etc.) tiene una columna tenantId.
  • No hay un middleware global que inyecte el filtro automáticamente — es responsabilidad de cada *.service.ts incluirlo explícitamente en cada where. Al escribir un query nuevo, ese es el primer chequeo: ¿tiene tenantId en el where?
  • SUPER_ADMIN es la única excepción real — gestiona tenants desde el módulo tenants, fuera del contexto de un tenant específico.

Dónde revisar esto en código

src/common/decorators/tenant-id.decorator.ts (el decorador) y cualquier *.service.ts como referencia de patrón — por ejemplo clients.service.ts o internet-services.service.ts.

On this page