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 columnatenantId. - No hay un middleware global que inyecte el filtro automáticamente — es responsabilidad
de cada
*.service.tsincluirlo explícitamente en cadawhere. Al escribir un query nuevo, ese es el primer chequeo: ¿tienetenantIden elwhere? SUPER_ADMINes la única excepción real — gestiona tenants desde el módulotenants, 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.