antes del reemplazo de archivos
This commit is contained in:
parent
3cddcb548e
commit
8d4580e138
25
CHANGELOG.md
25
CHANGELOG.md
@ -1,5 +1,30 @@
|
|||||||
# CHANGELOG - SIIP WhatsApp Notifications Plugin
|
# CHANGELOG - SIIP WhatsApp Notifications Plugin
|
||||||
|
|
||||||
|
## VERSIÓN 4.3.0 - 23-02-2026
|
||||||
|
|
||||||
|
### 🔐 Seguridad y Acceso (Login)
|
||||||
|
|
||||||
|
1️⃣ **Sistema de Login Integrado**:
|
||||||
|
_ Implementada pantalla de inicio de sesión "Premium" para acceso externo
|
||||||
|
_ Validación estricta con la API de UISP (endpoint `/user/login`)
|
||||||
|
_ Soporte completo para autenticación de dos factores (2FA / TOTP)
|
||||||
|
_ Control de roles: Acceso restringido exclusivamente a administradores y súper administradores
|
||||||
|
\_ Manejo de estado de sesiones con `sessionStorage` y validación híbrida PHP/JS
|
||||||
|
|
||||||
|
2️⃣ **Protección de Rutas (Proxy de Sesión)**:
|
||||||
|
_ Nuevo sistema PHP para detectar el contexto de la URL (Pública vs Privada CRM)
|
||||||
|
_ Auto-login transparente si existe una sesión válida en el navegador desde el portal UCRM
|
||||||
|
\_ Botón condicional de "Cerrar Sesión" exclusivo para accesos desde URL pública
|
||||||
|
|
||||||
|
### 💎 Rediseño Premium de Interfaz (UI/UX)
|
||||||
|
|
||||||
|
1️⃣ **Autenticación Premium (Stitch Glassmorphism)**:
|
||||||
|
_ Pantalla de login elegante usando tendencias de Glassmorphism (`blur`, transparencias RGBA, bordes sutiles iluminados)
|
||||||
|
_ Partículas flotantes decorativas con efecto desenfoque radial en el fondo oscuro
|
||||||
|
_ Inputs "Glow" reactivos y botones con gradientes vibrantes y sombra perimetral flotante
|
||||||
|
_ Interruptor ('Toggle Switch') animado con física de rebote para alternar entre modo Claro y Oscuro
|
||||||
|
\_ Ocultamiento de textos truncados ("Modo Osc...") en favor de una experiencia más visual y limpia con íconos deslizables
|
||||||
|
|
||||||
## VERSIÓN 4.2.2 - 10-02-2026
|
## VERSIÓN 4.2.2 - 10-02-2026
|
||||||
|
|
||||||
### ✨ Nuevas Características (Features)
|
### ✨ Nuevas Características (Features)
|
||||||
|
|||||||
88
Datos de la versión para el equipo - WhatsApp.txt
Normal file
88
Datos de la versión para el equipo - WhatsApp.txt
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
📢 Buenos días equipo, Mega Actualización del Plugin Notificaciones y Pagos WhatsApp SIIP 🚀 *Versiones 3.0.0 hasta 4.3.0*
|
||||||
|
|
||||||
|
Se ha completado una de las actualizaciones tecnológicas más grandes e importantes en la historia del sistema central de notificaciones y cobranza. Aquí se detallan todos los cambios monumentales:
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
💻 *1. El Nuevo Portal Administrativo SIIP*
|
||||||
|
|
||||||
|
Se integró un portal web completo y dedicado directamente dentro del CRM. Este portal centraliza toda la operación en 4 módulos principales:
|
||||||
|
|
||||||
|
• 👷♂️ *Módulo de Instaladores*: Permite gestionar y vincular a los técnicos e instaladores de la empresa para el enrutamiento de notificaciones.
|
||||||
|
• ✉️ *Módulo de Notificaciones y Comprobantes*: Brinda un historial de los pagos de cada cliente, con la función (altamente solicitada) para **reenviar manualmente los comprobantes de pago** por WhatsApp con un solo clic.
|
||||||
|
• 💳 *Módulo de Cobranza con Tarjetas (Stripe)*: Permite realizar cargos a tarjetas de crédito/débito en tiempo real o generar enlaces de pago, además de visualizar el historial financiero de los clientes.
|
||||||
|
• 🏪 *Módulo de Cobranza en Efectivo (Oxxo)*: Desde aquí se generan referencias de Oxxo Pay al instante para que el cliente pague en tienda, llevando un control exacto de las referencias emitidas.
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
🤖 *2. El Nuevo Cerebro de WhatsApp (Callbell)*
|
||||||
|
|
||||||
|
• 📱 *Nuevo Bot de Callbell*: Se migró toda la operación a un nuevo bot construido desde cero. Esto permite un envío de mensajes más estable y con mucha mayor capacidad de respuesta.
|
||||||
|
• ⚡ *Multiservicio*: Soporte ampliado para procesar múltiples servicios simultáneos sin cuellos de botella.
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
🧾 *3. La Revolución de Oxxo Pay y Comprobantes*
|
||||||
|
|
||||||
|
• 🛒 *Flujo por Órdenes y Base de Datos*: Se cambió la forma en que el sistema de Oxxo Pay funciona. Ahora trabaja bajo un sistema de órdenes respaldado por base de datos, ¡eliminando por fin los fallos y cobros no reflejados por *timeout*!
|
||||||
|
• 🏭 *Nuevos Microservicios Dedicados*: Se extrajo la carga de trabajo pesada a un nuevo microservicio.
|
||||||
|
→ Ahora este se encarga de generar los vouchers de Oxxo y los comprobantes de pago.
|
||||||
|
→ Realiza el recorte automático (cropping) preciso de las imágenes.
|
||||||
|
→ Inserta dinámicamente el *nombre del cliente* en la imagen ("overlay"), dejándolos listos para enviar.
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
☁️ *4. MinIO: La Nueva Nube Privada (Estilo AWS)*
|
||||||
|
|
||||||
|
• 🚀 *Adiós al FTP de WordPress*: Se ha dejado de depender de cargas lentas e inseguras por FTP hacia WordPress.
|
||||||
|
• 📦 *Almacenamiento MinIO*: Se implementó un sistema de almacenamiento de objetos idéntico a Amazon Web Services S3. Ahora todos los vouchers, comprobantes y PDFs se guardan de forma instantánea, segura y generan enlaces públicos a la velocidad de la luz.
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
🎨 *5. Interfaz Gráfica y Experiencia (UI/UX)*
|
||||||
|
|
||||||
|
• 💎 *Diseño Premium (Glassmorphism)*: Renovación visual completa usando estética de cristal moderno en el nuevo Portal Administrativo.
|
||||||
|
• 🔐 *Sistema de Login Seguro*: Ya no cualquiera puede entrar; ahora el portal valida la sesión de manera segura directo con el core de UCRM (al igual que el Hub de Herramientas de Pagos).
|
||||||
|
• 👁️ *Vouchers Inline*: Ahora se pueden visualizar los vouchers generados directamente dentro de la interfaz del portal sin tener que descargarlos previamente.
|
||||||
|
• 🌙 *Modo Oscuro*: El portal ahora respeta la vista con un modo oscuro elegante y funcional para todo el equipo.
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
📦 *Historial de Versiones Resumido (Desde v2.9.2)*
|
||||||
|
|
||||||
|
*v4.3.0* (Actual)
|
||||||
|
→ Sistema de Login con validación UCRM y Rediseño Premium Glassmorphism UI.
|
||||||
|
|
||||||
|
*v4.1.0*
|
||||||
|
→ Integración de Microservicio PDF y MinIO, Auto-recorte de comprobantes y textos dinámicos sobre imagen.
|
||||||
|
|
||||||
|
*v4.0.0*
|
||||||
|
→ Re-diseño UI con Nuevo Portal, integración Stripe (SPEI/OXXO), visualización inline y Optimización de seguridad FTP/Nube.
|
||||||
|
|
||||||
|
*v3.1.0*
|
||||||
|
→ Módulos Administrativos y Re-envío manual de notificaciones de pago.
|
||||||
|
|
||||||
|
*v3.0.0*
|
||||||
|
→ Soporte multiservicios y optimizaciones pesadas de rendimiento backend.
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
🚀 *Cómo Acceder*
|
||||||
|
|
||||||
|
Al igual que siempre, lo encuentran integrado en el CRM en:
|
||||||
|
*Reportes → Portal Administrativo de Pagos de STRIPE y Notificaciones WhatsApp*.
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
📝 *Notas Finales*
|
||||||
|
|
||||||
|
Esta no es solo una actualización visual, se cambió por completo el *motor interno* del plugin. Ahora el sistema opera con arquitectura de microservicios, cuenta con un portal administrativo completo y usa nubes privadas (MinIO) de nivel empresarial. Los fallos de timeout al cruzar cobros con Oxxo y las lentitudes de subir archivos por FTP pasaron a la historia.
|
||||||
|
|
||||||
|
Cualquier duda, favor de reportarla de inmediato para revisión.
|
||||||
|
|
||||||
|
*¡A sacarle provecho!* 💪
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
_Desarrollado con ❤️ por SIIP Internet_
|
||||||
|
_Versión 4.3.0 - Marzo 2026_
|
||||||
78
README.md
78
README.md
@ -1,54 +1,63 @@
|
|||||||
# SIIP - WhatsApp Notifications & Integrated Payment Portal
|
# SIIP - WhatsApp Notifications & Integrated Payment Portal
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
Este plugin es una solución integral que transforma tu UCRM en un **Portal Administrativo de Última Generación**. No solo automatiza la comunicación por WhatsApp, sino que integra un Dashboard completo para la gestión de pagos online (Stripe/OXXO), visualización de comprobantes y coordinación de equipos técnicos.
|
Este plugin es una solución integral que transforma tu UCRM en un **Portal Administrativo de Última Generación**. No solo automatiza la comunicación por WhatsApp, sino que integra un Dashboard completo para la gestión de pagos online (Stripe/OXXO), visualización de comprobantes y coordinación de equipos técnicos.
|
||||||
|
|
||||||
|
## 🔐 Novedades v4.3.0 (Security & Premium UI)
|
||||||
|
|
||||||
|
- **🛡️ Sistema de Acceso Seguro**: Implementada validación híbrida (Server + Client). El plugin ahora protege las URLs públicas mediante una pantalla de inicio de sesión que requiere credenciales de Administrador de UCRM o autenticación 2FA.
|
||||||
|
- **💎 Autenticación Premium (Glassmorphism)**: Nueva pantalla de inicio de sesión con una interfaz elegante y de lujo basada en Glassmorphism interactivo (esferas flotantes, desenfoques profundos, switch animado tipo iOS para modo oscuro).
|
||||||
|
- **🚀 Single-Sign-On Ciego**: Si el administrador ya ingresó desde el portal interno UCRM, la capa de seguridad detecta la sesión local y le otorga acceso sin pedir credenciales, optimizando el flujo de trabajo.
|
||||||
|
|
||||||
## 🚀 Novedades v4.2.0 (Analytics & Sync)
|
## 🚀 Novedades v4.2.0 (Analytics & Sync)
|
||||||
|
|
||||||
- **📊 Visualizador de Pagos Mensuales**: Nueva herramienta de análisis que permite seleccionar cualquier mes y visualizar gráficamente:
|
- **📊 Visualizador de Pagos Mensuales**: Nueva herramienta de análisis que permite seleccionar cualquier mes y visualizar gráficamente:
|
||||||
- Estadísticas de clientes activos vs clientes que pagaron
|
- Estadísticas de clientes activos vs clientes que pagaron
|
||||||
- Gráfica de dona interactiva con Chart.js
|
- Gráfica de dona interactiva con Chart.js
|
||||||
- Listado detallado de clientes pendientes con saldos
|
- Listado detallado de clientes pendientes con saldos
|
||||||
- Porcentajes de cobranza en tiempo real
|
- Porcentajes de cobranza en tiempo real
|
||||||
- **🔄 Sincronización Mejorada CallBell**: Fix crítico que garantiza la actualización automática del saldo y estado del cliente en CallBell cuando se agregan facturas o se modifican servicios.
|
- **🔄 Sincronización Mejorada CallBell**: Fix crítico que garantiza la actualización automática del saldo y estado del cliente en CallBell cuando se agregan facturas o se modifican servicios.
|
||||||
- **🎯 Categorización Inteligente de Pagos**: Nuevo microservicio con acceso directo a la base de datos para obtener metadata de Stripe (tipo de pago) y asignar correctamente los atributos incluso cuando la API de UCRM no tiene la información.
|
- **🎯 Categorización Inteligente de Pagos**: Nuevo microservicio con acceso directo a la base de datos para obtener metadata de Stripe (tipo de pago) y asignar correctamente los atributos incluso cuando la API de UCRM no tiene la información.
|
||||||
- **⚙️ Configuración para Producción**: Sistema de `.env` implementado para gestión segura de credenciales de base de datos.
|
- **⚙️ Configuración para Producción**: Sistema de `.env` implementado para gestión segura de credenciales de base de datos.
|
||||||
|
|
||||||
## 🚀 Novedades v4.1.0 (Performance & Storage)
|
## 🚀 Novedades v4.1.0 (Performance & Storage)
|
||||||
|
|
||||||
- **⚡ Microservicio PDF (`pdf-cropper`)**: Nuevo motor de renderizado externo (Python/FastAPI) que reemplaza librerías legacy, aumentando la velocidad y eliminando problemas de memoria en el servidor principal.
|
- **⚡ Microservicio PDF (`pdf-cropper`)**: Nuevo motor de renderizado externo (Python/FastAPI) que reemplaza librerías legacy, aumentando la velocidad y eliminando problemas de memoria en el servidor principal.
|
||||||
- **📦 MinIO / S3 Storage**: Migración completa del almacenamiento de comprobantes. Adiós FTP, hola almacenamiento de objetos seguro y escalable con URLs firmadas y limpieza automática.
|
- **📦 MinIO / S3 Storage**: Migración completa del almacenamiento de comprobantes. Adiós FTP, hola almacenamiento de objetos seguro y escalable con URLs firmadas y limpieza automática.
|
||||||
- **🖼️ Smart Image Processing**: Generación de imágenes "Full Mode" (sin recortes) y capacidad de **Edición Dinámica de Texto** (Overlay) para personalizar métodos de pago en los comprobantes.
|
- **🖼️ Smart Image Processing**: Generación de imágenes "Full Mode" (sin recortes) y capacidad de **Edición Dinámica de Texto** (Overlay) para personalizar métodos de pago en los comprobantes.
|
||||||
|
|
||||||
## 🚀 Novedades v4.0.0 (Portal Dashboard)
|
## 🚀 Novedades v4.0.0 (Portal Dashboard)
|
||||||
|
|
||||||
- **🖥️ Dashboard de Pagos Integrado**: Nueva interfaz visual dentro de UCRM para gestionar cobros de Stripe y OXXO sin salir de la plataforma.
|
- **🖥️ Dashboard de Pagos Integrado**: Nueva interfaz visual dentro de UCRM para gestionar cobros de Stripe y OXXO sin salir de la plataforma.
|
||||||
- **🏪 OXXO Pay Híbrido & Visual**: Generación de fichas OXXO con dos modos inteligentes:
|
- **🏪 OXXO Pay Híbrido & Visual**: Generación de fichas OXXO con dos modos inteligentes:
|
||||||
- **Inline (Admin)**: Visualización inmediata del voucher (local) para máxima velocidad.
|
- **Inline (Admin)**: Visualización inmediata del voucher (local) para máxima velocidad.
|
||||||
- **FTP (Webhook)**: Carga automática a servidor externo para compartir links públicos.
|
- **FTP (Webhook)**: Carga automática a servidor externo para compartir links públicos.
|
||||||
- **🌑 UI/UX Premium**: Interfaz rediseñada con Sidebar expandible, cabecera global "Sticky", Modo Oscuro automático y componentes responsivos.
|
- **🌑 UI/UX Premium**: Interfaz rediseñada con Sidebar expandible, cabecera global "Sticky", Modo Oscuro automático y componentes responsivos.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ⚡ Funcionalidades Principales
|
## ⚡ Funcionalidades Principales
|
||||||
|
|
||||||
### 1. Gestión de Cobranza Avanzada
|
### 1. Gestión de Cobranza Avanzada
|
||||||
- **Pagos SPEI**: Instrucciones inmediatas con CLABE personalizada.
|
|
||||||
- **Vouchers OXXO**: Generación instantánea de códigos de barras con vista previa "Split-Screen" (Datos + Imagen).
|
- **Pagos SPEI**: Instrucciones inmediatas con CLABE personalizada.
|
||||||
- **Historial en Tiempo Real**: Consulta los últimos 10 pagos de cualquier cliente al instante.
|
- **Vouchers OXXO**: Generación instantánea de códigos de barras con vista previa "Split-Screen" (Datos + Imagen).
|
||||||
|
- **Historial en Tiempo Real**: Consulta los últimos 10 pagos de cualquier cliente al instante.
|
||||||
|
|
||||||
### 2. Automatización WhatsApp (CallBell)
|
### 2. Automatización WhatsApp (CallBell)
|
||||||
- **Notificaciones Dinámicas**: Envío automático de facturas, recordatorios de pago y avisos de corte.
|
|
||||||
- **Re-envío Manual**: Herramienta para disparar notificaciones específicas desde el Dashboard si el proceso automático falla.
|
- **Notificaciones Dinámicas**: Envío automático de facturas, recordatorios de pago y avisos de corte.
|
||||||
- **Sincronización Total**: Mantiene los contactos de CallBell siempre actualizados con los datos del CRM.
|
- **Re-envío Manual**: Herramienta para disparar notificaciones específicas desde el Dashboard si el proceso automático falla.
|
||||||
|
- **Sincronización Total**: Mantiene los contactos de CallBell siempre actualizados con los datos del CRM.
|
||||||
|
|
||||||
### 3. Coordinación Técnica (Jobs/Tasks)
|
### 3. Coordinación Técnica (Jobs/Tasks)
|
||||||
- **Agenda Inteligente**: Notifica a instaladores sobre nuevas tareas y reprogramaciones.
|
|
||||||
- **Datos para Técnicos**: Envía coordenadas GPS y contraseñas de equipos (formato impresora térmica) directamente al WhatsApp del técnico.
|
- **Agenda Inteligente**: Notifica a instaladores sobre nuevas tareas y reprogramaciones.
|
||||||
|
- **Datos para Técnicos**: Envía coordenadas GPS y contraseñas de equipos (formato impresora térmica) directamente al WhatsApp del técnico.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -58,10 +67,10 @@ El plugin utiliza una arquitectura modular basada en **Facades** y **Servicios**
|
|||||||
|
|
||||||
### Componentes Clave
|
### Componentes Clave
|
||||||
|
|
||||||
- **Frontend (`public.php`)**: Una Single Page Application (SPA) ligera incrustada en UCRM, construida con Vanilla JS y CSS moderno (Variables, Flexbox/Grid).
|
- **Frontend (`public.php`)**: Una Single Page Application (SPA) ligera incrustada en UCRM, construida con Vanilla JS y CSS moderno (Variables, Flexbox/Grid).
|
||||||
- **Despachador (`Plugin.php`)**: Router de eventos que delega acciones a los controladores específicos.
|
- **Despachador (`Plugin.php`)**: Router de eventos que delega acciones a los controladores específicos.
|
||||||
- **Motor de Pagos (`PaymentIntentStripe`)**: Servicio robusto que se comunica con la API de Stripe para crear intenciones de pago y métodos.
|
- **Motor de Pagos (`PaymentIntentStripe`)**: Servicio robusto que se comunica con la API de Stripe para crear intenciones de pago y métodos.
|
||||||
- **Generador OXXO (`AbstractOxxoOperationsFacade`)**: Orquesta el flujo complejo: Stripe -> Puppeteer (Screenshot) -> FTP/Local Storage -> Respuesta JSON.
|
- **Generador OXXO (`AbstractOxxoOperationsFacade`)**: Orquesta el flujo complejo: Stripe -> Puppeteer (Screenshot) -> FTP/Local Storage -> Respuesta JSON.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -82,13 +91,14 @@ Para desbloquear todo el potencial, el plugin requiere:
|
|||||||
El plugin se configura directamente desde el panel de UCRM (`Ajustes -> Plugins -> siip-whatsapp-notifications`).
|
El plugin se configura directamente desde el panel de UCRM (`Ajustes -> Plugins -> siip-whatsapp-notifications`).
|
||||||
|
|
||||||
### Parámetros Críticos
|
### Parámetros Críticos
|
||||||
- `ipserver`: Tu dominio UCRM.
|
|
||||||
- `tokenstripe`: Tu Secret Key de Stripe.
|
- `ipserver`: Tu dominio UCRM.
|
||||||
- `tokencallbell`: Tu API Key de CallBell.
|
- `tokenstripe`: Tu Secret Key de Stripe.
|
||||||
- `hostServerFTP` / `user` / `pass`: Credenciales para el almacenamiento de vouchers remotos.
|
- `tokencallbell`: Tu API Key de CallBell.
|
||||||
|
- `hostServerFTP` / `user` / `pass`: Credenciales para el almacenamiento de vouchers remotos.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📝 Registro de Cambios
|
## 📝 Registro de Cambios
|
||||||
|
|
||||||
Para consultar la evolución detallada del proyecto, ver el archivo [CHANGELOG.md](./CHANGELOG.md).
|
Para consultar la evolución detallada del proyecto, ver el archivo [CHANGELOG.md](./CHANGELOG.md).
|
||||||
|
|||||||
2424
data/plugin.log
2424
data/plugin.log
File diff suppressed because one or more lines are too long
@ -5,13 +5,18 @@
|
|||||||
"displayName": "SIIP - Procesador de Pagos en línea con Stripe, Oxxo y Transferencia, Sincronizador de CallBell y Envío de Notificaciones y comprobantes vía WhatsApp",
|
"displayName": "SIIP - Procesador de Pagos en línea con Stripe, Oxxo y Transferencia, Sincronizador de CallBell y Envío de Notificaciones y comprobantes vía WhatsApp",
|
||||||
"description": "Este plugin sincroniza los clientes del sistema UISP CRM con los contactos de WhatsApp en CallBell, además procesa pagos de Stripe como las trasferencias bancarias y genera referencias de pago vía OXXO, además envía comprobantes de pago en formato imagen PNG o texto vía Whatsapp a los clientes",
|
"description": "Este plugin sincroniza los clientes del sistema UISP CRM con los contactos de WhatsApp en CallBell, además procesa pagos de Stripe como las trasferencias bancarias y genera referencias de pago vía OXXO, además envía comprobantes de pago en formato imagen PNG o texto vía Whatsapp a los clientes",
|
||||||
"url": "https://siip.mx/",
|
"url": "https://siip.mx/",
|
||||||
"version": "4.2.2",
|
"version": "4.3.0",
|
||||||
"unmsVersionCompliancy": {
|
"unmsVersionCompliancy": {
|
||||||
"min": "2.1.0",
|
"min": "2.1.0",
|
||||||
"max": null
|
"max": null
|
||||||
},
|
},
|
||||||
"author": "SIIP INTERNET",
|
"author": "SIIP INTERNET",
|
||||||
"changelog": [
|
"changelog": [
|
||||||
|
{
|
||||||
|
"version": "4.3.0",
|
||||||
|
"date": "2026-02-23",
|
||||||
|
"changes": "Implementación de Sistema de Login Seguro con validación de sesiones UCRM y Rediseño Premium Glassmorphism UI."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"date": "2026-01-15",
|
"date": "2026-01-15",
|
||||||
@ -276,4 +281,4 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"supportsWebhookEvents": true
|
"supportsWebhookEvents": true
|
||||||
}
|
}
|
||||||
|
|||||||
90
public.php
90
public.php
@ -1327,6 +1327,38 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.login-theme-btn {
|
||||||
|
position: absolute;
|
||||||
|
top: 24px;
|
||||||
|
right: 24px;
|
||||||
|
z-index: 10000;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 10px 20px;
|
||||||
|
border-radius: 30px;
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
font-weight: 600;
|
||||||
|
white-space: nowrap;
|
||||||
|
background: rgba(15, 23, 42, 0.6);
|
||||||
|
color: #f8fafc;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.15);
|
||||||
|
backdrop-filter: blur(16px);
|
||||||
|
-webkit-backdrop-filter: blur(16px);
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-theme-btn:hover {
|
||||||
|
background: rgba(15, 23, 42, 0.8);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
|
||||||
|
border-color: rgba(255, 255, 255, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
[data-theme="light"] #loginOverlay {
|
[data-theme="light"] #loginOverlay {
|
||||||
background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #f8fafc 100%);
|
background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #f8fafc 100%);
|
||||||
}
|
}
|
||||||
@ -1341,6 +1373,27 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
|
|||||||
color: #0f172a;
|
color: #0f172a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[data-theme="light"] .login-theme-btn {
|
||||||
|
background: rgba(255, 255, 255, 0.7);
|
||||||
|
color: #1e293b;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 1);
|
||||||
|
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme="light"] .login-theme-btn:hover {
|
||||||
|
background: rgba(255, 255, 255, 0.95);
|
||||||
|
border-color: rgba(209, 213, 219, 0.8);
|
||||||
|
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-theme-btn .theme-icon,
|
||||||
|
.login-theme-btn .theme-icon-box {
|
||||||
|
flex-shrink: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
[data-theme="light"] .login-subtitle,
|
[data-theme="light"] .login-subtitle,
|
||||||
[data-theme="light"] .login-field label,
|
[data-theme="light"] .login-field label,
|
||||||
[data-theme="light"] .login-footer {
|
[data-theme="light"] .login-footer {
|
||||||
@ -1372,7 +1425,7 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
|
|||||||
<body>
|
<body>
|
||||||
<!-- ━━━ Login Overlay ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -->
|
<!-- ━━━ Login Overlay ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -->
|
||||||
<div id="loginOverlay">
|
<div id="loginOverlay">
|
||||||
<button class="theme-toggle" onclick="toggleTheme()" style="position: absolute; top: 24px; right: 24px; z-index: 10000; display: flex; align-items: center; gap: 8px; padding: 10px 18px; border-radius: 20px; font-family: 'Outfit', sans-serif; font-size: 0.95rem; font-weight: 600; background: var(--bg-card); color: var(--text-main); border: 1px solid var(--border); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); cursor: pointer; transition: all 0.2s ease;">
|
<button class="theme-toggle login-theme-btn" onclick="toggleTheme()">
|
||||||
<div class="theme-icon-box" style="display: flex; align-items: center; justify-content: center;"></div>
|
<div class="theme-icon-box" style="display: flex; align-items: center; justify-content: center;"></div>
|
||||||
<span class="theme-text">Modo Claro</span>
|
<span class="theme-text">Modo Claro</span>
|
||||||
</button>
|
</button>
|
||||||
@ -1431,16 +1484,14 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
|
|||||||
</svg>
|
</svg>
|
||||||
Menú Principal
|
Menú Principal
|
||||||
</button>
|
</button>
|
||||||
<?php if (strpos($_SERVER['REQUEST_URI'], '_plugins') !== false): ?>
|
<button id="logoutBtn" class="btn btn-secondary" style="color: #ef4444; border-color: rgba(239, 68, 68, 0.3); background: rgba(239, 68, 68, 0.05);" onclick="handleLogout()">
|
||||||
<button class="btn btn-secondary" style="color: #ef4444; border-color: rgba(239, 68, 68, 0.3); background: rgba(239, 68, 68, 0.05);" onclick="handleLogout()">
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="vertical-align:middle; margin-right:6px;">
|
||||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="vertical-align:middle; margin-right:6px;">
|
<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path>
|
||||||
<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path>
|
<polyline points="16 17 21 12 16 7"></polyline>
|
||||||
<polyline points="16 17 21 12 16 7"></polyline>
|
<line x1="21" y1="12" x2="9" y2="12"></line>
|
||||||
<line x1="21" y1="12" x2="9" y2="12"></line>
|
</svg>
|
||||||
</svg>
|
Cerrar Sesión
|
||||||
Cerrar Sesión
|
</button>
|
||||||
</button>
|
|
||||||
<?php endif; ?>
|
|
||||||
<!-- RESTORED THEME BUTTON -->
|
<!-- RESTORED THEME BUTTON -->
|
||||||
<!-- PREMIUM THEME BUTTON -->
|
<!-- PREMIUM THEME BUTTON -->
|
||||||
<button class="theme-toggle" id="themeBtn" onclick="toggleTheme()">
|
<button class="theme-toggle" id="themeBtn" onclick="toggleTheme()">
|
||||||
@ -1938,7 +1989,12 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
|
|||||||
window.handleLogout = () => {
|
window.handleLogout = () => {
|
||||||
sessionStorage.removeItem('nms_auth_token');
|
sessionStorage.removeItem('nms_auth_token');
|
||||||
sessionStorage.removeItem('nms_user');
|
sessionStorage.removeItem('nms_user');
|
||||||
window.location.reload();
|
|
||||||
|
if (!NEEDS_LOGIN) {
|
||||||
|
window.top.location.href = '/crm/logout';
|
||||||
|
} else {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -2847,6 +2903,16 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Inicialización: decidir si mostrar login o portal
|
// Inicialización: decidir si mostrar login o portal
|
||||||
|
sessionStorage.removeItem('nms_force_local_login'); // Cleanup from previous versions
|
||||||
|
|
||||||
|
// Ocultar botón de Cerrar Sesión si estamos dentro del iframe del CRM
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
if (window.top !== window.self) {
|
||||||
|
const logoutBtn = document.getElementById('logoutBtn');
|
||||||
|
if (logoutBtn) logoutBtn.style.display = 'none';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (NEEDS_LOGIN) {
|
if (NEEDS_LOGIN) {
|
||||||
// No hay sesión UCRM, intentar con token almacenado
|
// No hay sesión UCRM, intentar con token almacenado
|
||||||
verifyStoredSession().then(valid => {
|
verifyStoredSession().then(valid => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user