Sistema de PIN para Empleados
Autenticación rápida y segura con PIN de 4 dígitos para acceso al POS y otras interfaces operativas.
💡 Antes de comenzar: El sistema utiliza PINs de 4 dígitos para autenticación rápida de empleados. Los PINs están encriptados con bcryptjs y nunca se almacenan en texto plano. Cada PIN debe ser único en el sistema.
¿Qué es el PIN?
El PIN (Personal Identification Number) es un código de exactamente 4 dígitos numéricos que permite a los empleados:
- Iniciar sesión en el POS, Kitchen, Waiter o Cadete
- Autenticarse de forma rápida sin necesidad de teclado
- Registrar el inicio y fin de su turno (check-in/check-out)
- Re-autenticarse después de inactividad
✅ PINs Válidos
- 1234
- 0000
- 9876
- 5555
Exactamente 4 dígitos
❌ PINs Inválidos
- 123 (muy corto)
- 12345 (muy largo)
- abcd (no numérico)
- 12a4 (contiene letras)
Solo números, solo 4 dígitos
Crear un PIN para un Empleado
Al Crear un Nuevo Empleado
- Ve a /[slug]/admin/employees
- Haz clic en "Crear Empleado"
- Completa nombre, apellido, email, teléfono
- En el campo "PIN", ingresa 4 dígitos
- El sistema verifica automáticamente que no esté en uso
- Si el PIN ya existe, muestra un error
- Selecciona el rol del empleado
- Guarda el empleado
🔒 Seguridad automática: Cuando guardas el empleado, el sistema encripta el PIN con bcryptjs (10 rondas de salt). El PIN en texto plano NUNCA se guarda en la base de datos.
Cómo Funciona la Seguridad del PIN
Encriptación con bcryptjs
PIN ingresado: 1234
Guardado en DB: $2b$10$x3kL9mN...
Hash irreversible de 60 caracteres. Es matemáticamente imposible recuperar el PIN original.
Proceso de Verificación
- El empleado ingresa su PIN (ej: 1234)
- El sistema busca todos los empleados/admins con PINs
- Para cada uno, compara el PIN ingresado con el hash almacenado usando
bcrypt.compare() - Si coincide alguno → Autenticación exitosa
- Si ninguno coincide → Error "PIN incorrecto"
⚠️ Importante: El proceso de verificación toma unos milisegundos debido al proceso de hashing. Esto es intencional y añade seguridad contra ataques de fuerza bruta.
Iniciar Sesión con PIN
Desde el POS
- Abre la URL del POS:
/[slug]/pos/login - Verás un teclado numérico con dígitos del 0-9
- Ingresa tu PIN de 4 dígitos
- Haz clic en "Ingresar"
- Si el PIN es correcto:
- Se crea una nueva sesión (SessionLog)
- Se registra el check-in automáticamente
- Eres redirigido al POS
Desde Kitchen
Similar al POS, pero en /[slug]/kitchen/login
Desde Waiter
Similar al POS, pero en /[slug]/waiter/login
Re-autenticación por Inactividad
Para mantener la seguridad, el sistema solicita re-autenticación después de 10 minutos de inactividad.
¿Qué es Actividad?
El sistema detecta las siguientes acciones como actividad:
- Movimientos del mouse
- Toques en pantalla táctil
- Pulsaciones de teclado
- Scroll en la página
- Clicks en cualquier parte
Flujo de Re-autenticación
- Pasan 10 minutos sin actividad
- Aparece un modal solicitando el PIN
- El empleado ingresa su PIN nuevamente
- Si es correcto → El timer se resetea y continúa trabajando
- Si es incorrecto → Muestra error, puede reintentar
💡 Nota: La re-autenticación NO cierra tu sesión. Tu turno (check-in/check-out) sigue activo. Solo verifica que sigas siendo tú quien está usando el sistema.
Cambiar el PIN de un Empleado
Como Administrador
- Ve a la lista de empleados
- Haz clic en el empleado
- Haz clic en "Editar"
- Cambia el valor del campo "PIN"
- Guarda los cambios
- El nuevo PIN se encripta automáticamente
⚠️ Aviso al empleado: Cuando cambias el PIN de un empleado, debes comunicarle el nuevo PIN de forma segura (en persona, no por email/WhatsApp). El sistema NO puede recuperar el PIN anterior.
PINs Duplicados
El sistema NO permite PINs duplicados para evitar confusiones y problemas de seguridad.
Verificación Automática
Cuando intentas crear o actualizar un empleado con un PIN:
- El backend verifica en:
- Todos los Empleados (Employee)
- Todos los Administradores con PIN habilitado (TenantUser)
- Todos los Cadetes
- Si el PIN ya existe → Error: "PIN ya en uso"
- Si el PIN está disponible → Continúa con la creación/actualización
Ejemplo de Error
❌ "El PIN 1234 ya está asignado a otro empleado o administrador"
Debes elegir un PIN diferente (ej: 1235, 4321, etc.)
Recuperar o Resetear un PIN Olvidado
Los PINs están encriptados de forma irreversible, por lo que NO se pueden recuperar. Solo se pueden resetear.
Proceso de Reseteo
- El empleado informa que olvidó su PIN
- Un administrador va a /admin/employees
- Selecciona al empleado y hace clic en "Editar"
- Asigna un nuevo PIN de 4 dígitos
- Guarda los cambios
- Comunica el nuevo PIN al empleado de forma segura
✅ Buena práctica: Recomienda al empleado que cambie el PIN temporal a uno que él elija y recuerde. Aunque actualmente el empleado no puede cambiar su propio PIN, puedes ofrecerle cambiarlo por él cuando te lo comunique.
Habilitar PIN para Administradores
Los Administradores (TenantUsers) normalmente inician sesión con email + password, pero opcionalmente pueden tener un PIN para acceder al POS.
Activar PIN para Admin
- Ve a Configuración de Cuenta
- Habilita "Permitir acceso al POS"
- Ingresa un PIN de 4 dígitos
- Guarda los cambios
Ahora el administrador puede:
- Acceder al panel admin con email + password (como siempre)
- Acceder al POS con su PIN (como los empleados)
Orden de Prioridad en Autenticación
Cuando un PIN es ingresado, el sistema busca en este orden:
- TenantUsers con PIN habilitado (Admins/Owners)
- Employees activos (Cajeros, cocina, meseros)
- Cadetes activos
💡 Implicación: Si un Admin y un Employee tienen el mismo PIN (aunque el sistema previene esto), el Admin tiene prioridad y será quien inicie sesión.
Consejos de Seguridad
✅ Evita PINs obvios: No uses 0000, 1111, 1234, etc. Usa combinaciones menos predecibles.
✅ No compartas PINs: Cada empleado debe tener su propio PIN único. Nunca compartan PINs entre empleados.
✅ Cambia PINs comprometidos: Si sospechas que alguien conoce el PIN de un empleado, cámbialo inmediatamente.
✅ Desactiva empleados que ya no trabajan: No dejes activos empleados que ya no están en el negocio, aunque cambies su PIN.
Solución de Problemas
El PIN no funciona, dice "PIN incorrecto"
Verifica que: (1) El empleado está activo (isActive = true), (2) El tenant está activo, (3) El PIN es exactamente de 4 dígitos, (4) No hay espacios antes o después del PIN, (5) El empleado está usando la interfaz correcta para su rol.
No me deja guardar el PIN, dice "ya en uso"
Otro empleado o administrador ya tiene ese PIN. Elige un PIN diferente. El sistema verifica contra todos los empleados, administradores y cadetes del negocio.
¿Puedo ver el PIN de un empleado?
No, por seguridad, los PINs están encriptados y es imposible recuperarlos. Solo puedes asignar un nuevo PIN si el empleado lo olvidó. Ni siquiera el superadministrador puede ver los PINs originales.
El empleado ingresa el PIN correcto pero no entra
Puede ser que: (1) El empleado ya tiene una sesión activa en otro dispositivo y el límite es 1 sesión, (2) El empleado está desactivado, (3) Hay un problema de red al comunicarse con el backend. Verifica el estado del empleado en el panel admin.
¿Cuántos intentos fallidos permite?
Actualmente no hay límite de intentos fallidos a nivel de sistema. Sin embargo, cada intento de verificación toma tiempo (por el hashing), lo que dificulta ataques de fuerza bruta. Se recomienda monitorear intentos fallidos repetidos y bloquear empleados sospechosos.
¿Te fue útil este artículo?