ValwispDocs
Implementadores

Roles y permisos

Catálogo de permisos (CASL), los 6 roles por defecto y cómo crear un rol personalizado.

Valwisp usa un sistema de autorización de dos capas: roles legacy (enum UserRole) y un sistema dinámico basado en CASL respaldado por base de datos. Ver Desarrolladores → Autenticación para el detalle técnico de los guards; esta página se enfoca en el catálogo de permisos y cómo operarlo.

Catálogo de permisos

permission-catalog.ts define ~137 permisos (code, module, action, description), organizados por módulo (clients, services, invoices, payments, routers, naps, plans, tickets, installations, inventory, brigades, accounting, valstaff, valchat, etc.). Es la fuente única de verdad — se siembra en la tabla Permission de cada tenant.

Roles por defecto y su alcance real

RolAlcance
Super AdminAcceso total (manage all), bypass de cualquier chequeo.
AdminTodos los permisos del catálogo — en la práctica, equivalente a Super Admin.
OperatorClientes, servicios, facturas (lectura+creación, no anular), pagos, routers (lectura+conectar), NAPs, planes (lectura), tickets, instalaciones, inventario, brigadas, combustible, contratos, hotspot, anuncios, servicios adicionales, VoIP, sucursales, cajas, plantillas, dashboard, ValChat inbox+mi-panel. Sin acceso: settings, roles, usuarios (solo lectura), Contabilidad, ValStaff, flujos/agentes/panel de ValChat.
CollectorClientes (lectura), facturas (lectura), pagos (lectura+registrar), ponches propios, contratos (lectura), hotspot, sucursales, cajas (ciclo completo), plantillas, dashboard.
TechnicianClientes (lectura), servicios (lectura/editar/provisionar), routers (lectura+conectar), NAPs (lectura), tickets, instalaciones, inventario, brigadas (lectura+GPS), combustible, ponches propios, plantillas, dashboard.
ReadonlySolo lectura de los módulos operativos (clientes, servicios, facturas, pagos, routers, NAPs, planes, tickets, instalaciones, inventario, brigadas, combustible, contratos, plantillas, dashboard, ValChat inbox+mi-panel).

Contabilidad y ValStaff son solo Super Admin/Admin por defecto en los 6 roles fijos — para dar acceso a otro perfil (ej. un contador externo), crea un rol personalizado en vez de modificar el default de Operator.

Crear un rol personalizado

Desde Ajustes → Roles (dashboard), un Admin puede crear un rol nuevo combinando libremente cualquier permiso del catálogo. Técnicamente, esto crea una fila Role + RolePermission en base de datos; CaslAbilityFactory.createForUser() construye la Ability del usuario a partir de ahí, con caché en Redis (ability:{roleId}, TTL 300s).

Al modificar los permisos de un rol ya asignado a usuarios, invalida el caché (invalidateRole(roleId)) o espera el TTL de 5 minutos — si no, los usuarios con ese rol seguirán operando con los permisos viejos hasta que expire la caché.

Sub-permisos granulares (ejemplo: ValChat)

Algunos módulos exponen permisos más finos que "todo o nada" — ValChat, por ejemplo, tiene valchat-inbox, valchat-flows, valchat-tools, valchat-settings, valchat-panel, valchat-mypanel, valchat-agents, valchat-channels como códigos independientes. Un agente de soporte normal solo necesita inbox + mypanel.

On this page