- authenticateUser incluye turnero_lugar_id en la sesión
- login.php redirige con desk_id/lugar_id si el usuario tiene lugar fijo (sin necesitar IP)
- recepcion.php redirige con desk_id si la sesión tiene turnero_lugar_id, evitando el modal de selección
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- login.php: detectar dispositivo por IP al autenticar y redirigir al lugar asignado
- dashboard.php / lugar.php / recepcion.php: bloquear acceso por dispositivo (IP→lugar)
- lugar.php: modal firma profesional pre-guardada; compact 2-col en iframe; botón WA
solo cuando el formulario requiere firma del paciente
- ver_formulario_enviado.php: modo compact tablet, auto-save borrador (merge), firma
profesional en 1 clic, Muestras Prolongadas (countdown + Finalizar), auto_profesional
pre-fill desde sesión, fecha→fecha_hoy en campos de toma/recepción
- get_consentimientos.php: añadir requiere_firma_paciente para controlar botón WA
- save_firma_profesional.php: API para guardar firma pre-configurada del profesional
- migrations: turnero_dispositivos, admin_users.firma_svg, clon VIH F-LAB-05 para turnero
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
BD: home_page asignado a roles que lo tenían NULL:
- recepcionista → /erp.php?m=turnero&v=recepcion
- supervisor → /lab_dashboard.php
- operador_bot → /index.php
- readonly → /lab_ordenes.php
login.php: fallback mejorado por módulos cuando home_page no aplica
(turnero → recepcion, lab_dashboard → dashboard, etc.)
index.php: redirige recepcionistas y roles sin whatsapp a su página
correcta si por algún motivo llegan al panel de WhatsApp.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- lab_domicilios.php: sidebar filtrado por hasModule()
- lab_ordenes.php: sidebar filtrado por hasModule()
- login.php: redirige a lab_domicilios.php si módulos son [lab_domicilios, lab_ordenes]
- migration: elimina lab_dashboard y lab_pacientes del rol lab_readonly
- DB producción: rol lab_readonly queda con lab_domicilios(read) + lab_ordenes(read)
- login.php: redirige a lab_formularios.php si el único módulo es lab_formularios
- lab_formularios.php: sidebar filtra links por hasModule() según el rol
- migration: permiso write en lab_formularios para formularios_readonly
- DB: eliminado lab_dashboard de formularios_readonly (solo lectura de resultados)