Skip to content

v2026.6.12

Fecha de lanzamiento: 30 de junio de 2026


✨ Nuevas Funcionalidades

Permisos granulares por usuario

Cada miembro de la organización puede tener un conjunto de permisos único, configurado individualmente — independiente del rol o grupo asignado.

La jerarquía de resolución es exclusiva (sin mezcla entre capas):

  1. Permisos personalizados del usuario — si existen, tienen prioridad total
  2. Grupo de permisos asignado — utilizado cuando no hay permisos personalizados
  3. Plantilla del rol — fallback final

Regla de oro: el rol owner siempre usa la plantilla completa y nunca puede ser restringido por permisos personalizados o grupos.

¿Para qué sirve?

  • Conceder o restringir módulos específicos a un usuario sin cambiar su rol
  • Definir si un agente ve todos los clientes/embudos o solo los que atiende
  • Crear combinaciones de acceso no cubiertas por los roles predeterminados

¿Cómo configurar?

  1. Ve a Configuración → Miembros
  2. Encuentra el miembro deseado y haz clic en Permisos
  3. En la pestaña Permiso individual, activa los módulos y acciones deseados
  4. Marca o desmarca banderas especiales como "Ver todos los clientes" o "Ver todas las conversaciones"
  5. Guarda — los permisos entran en vigor de inmediato

Control de visibilidad de clientes y CRM

La bandera canAccessAll en los módulos Clientes y CRM determina el alcance de visión del usuario:

BanderaComportamiento en sidebarComportamiento en filtros
canAccessAll: trueMuestra "Los que atiendo" y "Todos"Acceso libre
canAccessAll: falseMuestra solo "Los que atiendo"Filtrado automáticamente por ID propio

Roles con visión total por defecto: owner, admin, manager, financial.
Roles con visión restringida por defecto: agent, agent_limited, sales, medical_doctor, medical_assistant.


Cuando un elemento de menú tiene submenús pero solo uno de ellos está disponible para el usuario (por permisos), el clic navega directamente a esa página — sin abrir el panel expandible.

Antes: hacer clic en "Clientes" expandía el menú, incluso con un único submenú.
Ahora: hacer clic en "Clientes" va directamente a la única opción disponible.


🔄 Cambios

Verificaciones de rol sustituidas por permisos efectivos

Todos los puntos del frontend y del backend que comparaban directamente role === 'admin' || role === 'owner' fueron migrados para usar permisos efectivos:

  • Frontend: isOwnerOrAdmin, isOwner y banderas específicas de módulo (customersPermissions.canAccessAll, chatsPermissions.canAssignToOthers) — derivadas del hook usePermissions
  • Backend: req.isAdmin, req.isOwner y req.is_superadmin — poblados en el middleware de autenticación sin consultas adicionales a la base de datos

Banderas de acceso en el middleware de autenticación

El middleware applyMembershipAuthContextToRequest ahora define req.isOwner y req.isAdmin según el rol del miembro, directamente en la capa de autenticación. Los controladores y handlers dejan de hacer consultas redundantes a la base de datos para verificar el rol del usuario que hizo la solicitud.

Protección de rutas de backend por módulo

Middleware requireModuleAccess aplicado a las rutas de: configuración, integraciones, facturación, Stripe, suscripción, grupos de permisos, equipos de atención y UTM.

Protección de rutas de frontend por módulo

Componente ModuleGuard envolviendo grupos de rutas de React Router para: financiero, informes, miembros, grupos de permisos, equipos, mensajes masivos, flujos, prompts, facturación, canales, médico, documentos, PDV, UTM y configuración.


🐛 Correcciones

Permisos personalizados ignoraban canAccessAll: false

Cuando un usuario tenía permisos personalizados definidos pero el campo canAccessAll en el módulo de clientes no estaba marcado, el sistema usaba el valor predeterminado true — mostrando incorrectamente todos los clientes. Corregido: la ausencia de la bandera en permisos personalizados ahora se trata como false (restrictivo por defecto).


🎯 Beneficios

  • ✅ Control de acceso por módulo sin necesidad de crear roles específicos
  • ✅ El owner nunca pierde acceso total, incluso con permisos personalizados configurados
  • ✅ Sidebar y filtros se adaptan automáticamente al alcance de visión del usuario
  • ✅ Navegación más fluida: sin expansión innecesaria de menús con elemento único
  • ✅ Backend sin consultas adicionales: verificaciones de acceso resueltas en la capa de autenticación

Documentación en constante actualización