Files
whatsapp/api
Lizandro GuarnizoandClaude Sonnet 4.6 ae8d2cb13a feat: página pública de verificación de paciente por OTP (SMS)
verificar.php:
- Pública, sin autenticación ni menú lateral
- Diseño moderno: card glassmorphism sobre gradiente brand
- Flujo en 3 pasos con indicador animado
- Paso 1: ingresa cédula → busca paciente
- Paso 2: inputs OTP de 6 dígitos con navegación automática
  y pegado desde portapapeles; cuenta regresiva + reenvío a los 60s
- Paso 3: pantalla de éxito con animación

api/public/send_otp.php:
- Busca paciente por cédula, genera OTP aleatorio de 6 dígitos
- Guarda en lab_otp_tokens con expiración 5 min
- Envía SMS via WEBSms usando config de lab_config
- Retorna teléfono enmascarado (3**1234**67)

api/public/verify_otp.php:
- Valida cedula+codigo contra lab_otp_tokens activos
- Marca OTP como usado y paciente como verificado
  (telefono_verificado=1, verificado_at=NOW())

DB:
- lab_pacientes: +telefono_verificado, +verificado_at
- lab_otp_tokens: tabla nueva para almacenar OTPs temporales

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 00:39:30 -05:00
..
up
2026-03-10 18:42:51 -05:00
up
2026-01-28 13:49:07 -05:00
up
2026-01-12 11:06:43 -05:00
up
2026-01-25 22:49:13 -05:00
up
2026-02-03 21:30:55 -05:00
up
2026-01-12 11:06:43 -05:00
2026-01-13 00:33:29 -05:00
up
2026-02-03 21:30:55 -05:00
2026-01-12 22:58:19 -05:00
up
2026-01-21 02:22:29 -05:00
up
2026-01-13 00:11:44 -05:00
2026-01-12 22:42:41 -05:00
up
2026-02-03 21:30:55 -05:00
up
2026-02-03 21:30:55 -05:00
ujp
2026-01-21 23:55:49 -05:00
2026-01-21 08:28:54 -05:00
2026-01-12 14:08:21 -05:00
up
2026-02-03 21:30:55 -05:00
up
2026-03-10 18:42:51 -05:00
2026-01-21 08:28:54 -05:00
up
2026-02-21 07:37:36 -05:00
up
2026-01-25 22:49:13 -05:00
up
2026-01-12 11:06:43 -05:00
up
2026-02-21 11:24:15 -05:00
2026-01-12 22:58:19 -05:00
2026-03-16 18:36:11 -05:00
up
2026-01-21 08:54:57 -05:00
up
2026-02-20 11:21:06 -05:00
2026-01-21 08:28:54 -05:00
up
2026-02-21 11:24:15 -05:00
up
2026-02-21 07:37:36 -05:00
up
2026-01-21 11:17:36 -05:00
2026-01-12 22:58:19 -05:00
up
2026-02-06 09:38:36 -05:00
up
2026-05-27 11:44:07 -05:00
up
2026-01-24 00:47:13 -05:00
up
2026-01-28 13:49:07 -05:00
up
2026-02-20 09:07:37 -05:00
up
2026-01-21 08:47:04 -05:00
up
2026-01-28 13:49:07 -05:00
up
2026-02-03 21:30:55 -05:00
2026-01-21 08:28:54 -05:00
up
2026-01-22 11:29:24 -05:00
up
2026-01-21 08:54:57 -05:00
up
2026-02-03 21:30:55 -05:00
2026-02-03 21:48:08 -05:00
up
2026-03-10 18:42:51 -05:00
up
2026-03-10 18:42:51 -05:00
up
2026-01-21 11:17:36 -05:00
up
2026-01-28 13:49:07 -05:00
up
2026-02-03 21:30:55 -05:00
up
2026-01-20 22:13:02 -05:00
2026-01-21 08:28:54 -05:00
2026-05-11 12:21:56 -05:00
2026-05-11 12:21:56 -05:00
up
2026-03-10 18:42:51 -05:00
up
2026-01-12 11:06:43 -05:00
up
2026-01-12 11:06:43 -05:00
2026-01-12 22:58:25 -05:00
up
2026-01-21 02:22:29 -05:00
2026-01-23 22:12:27 -05:00
up
2026-01-21 02:49:42 -05:00
up
2026-02-20 11:46:29 -05:00
up
2026-02-03 21:30:55 -05:00
up
2026-01-27 14:51:41 -05:00
up
2026-01-25 21:48:56 -05:00
2026-01-25 23:05:45 -05:00
up
2026-02-21 07:37:36 -05:00
2026-01-12 22:58:19 -05:00
up
2026-01-13 00:11:44 -05:00
p
2026-05-27 10:30:47 -05:00
2026-01-21 08:28:54 -05:00
ujp
2026-01-21 23:55:49 -05:00
up
2026-01-21 09:07:37 -05:00
up
2026-01-20 22:33:39 -05:00
up
2026-02-03 21:30:55 -05:00
2026-03-16 18:36:11 -05:00
up
2026-02-21 11:45:32 -05:00
up
2026-01-21 01:02:17 -05:00
up
2026-01-21 01:02:17 -05:00
p
2026-05-27 10:30:47 -05:00
up
2026-01-21 02:45:59 -05:00
up
2026-01-29 11:40:04 -05:00
up
2026-01-27 15:01:32 -05:00
up
2026-01-27 14:51:41 -05:00
up
2026-02-03 21:30:55 -05:00
up
2026-02-03 21:30:55 -05:00
up
2026-02-03 21:30:55 -05:00
up
2026-01-13 00:11:44 -05:00
up
2026-02-03 21:30:55 -05:00
up
2026-01-12 11:06:43 -05:00
up
2026-01-21 02:22:29 -05:00
up
2026-02-03 21:30:55 -05:00
up
2026-03-10 18:42:51 -05:00
up
2026-02-21 07:37:36 -05:00
up
2026-01-20 22:13:02 -05:00