services/api/src/utils/emailVerification.js

Overview

Este archivo concentra la lógica mínima para trabajar con tokens de verificación de correo. El módulo exporta una constante de expiración y dos helpers reutilizables para generar y hashear tokens.

El comentario del archivo indica que esta utilidad se comparte entre registerUser y resendEmailVerification. También aclara que, a diferencia de passwordResetToken y restorationToken, aquí solo se persiste el hash.

[!IMPORTANT] EMAIL_VERIFICATION_TOKEN_TTL_MS define una vigencia de 24 horas para el token de verificación.

How it works

flowchart TB
    Module[emailVerification.js]
    Crypto[crypto]
    TTL[EMAIL_VERIFICATION_TOKEN_TTL_MS]
    Generate[generateEmailVerificationToken]
    Hash[hashEmailVerificationToken]

    Module --> TTL
    Module --> Generate
    Module --> Hash
    Generate --> Crypto
    Hash --> Crypto

El módulo importa crypto desde Node.js y expone tres elementos públicos. Uno define el tiempo de vida del token, otro crea un valor aleatorio en hexadecimal y el último calcula un hash SHA-256 del token recibido.

La lógica está aislada en funciones pequeñas. Eso permite reutilizarla en distintos flujos sin duplicar el cálculo del token ni su hash.

Key components

{
    "title": "generateEmailVerificationToken",
    "content": "Funci\u00f3n p\u00fablica que genera un token aleatorio de 32 bytes y lo devuelve como cadena hexadecimal. Produce el valor que luego puede usarse para verificaci\u00f3n de correo.",
    "type": "function",
    "filePath": "services/api/src/utils/emailVerification.js",
    "badges": [
        "public"
    ]
}
{
    "title": "hashEmailVerificationToken",
    "content": "Funci\u00f3n p\u00fablica que calcula el hash SHA-256 del token recibido y lo devuelve en hexadecimal. El token se normaliza con String(token) antes de hashearlo.",
    "type": "function",
    "filePath": "services/api/src/utils/emailVerification.js",
    "badges": [
        "public"
    ]
}

Data & fields

[
    {
        "name": "EMAIL_VERIFICATION_TOKEN_TTL_MS",
        "type": "number",
        "required": true,
        "description": "Constante de solo lectura que define la duración de validez del token de verificación en milisegundos. Su valor equivale a 24 horas."
    }
]

[!NOTE] El archivo no declara clases, interfaces ni estructuras anidadas. Solo expone una constante y dos funciones.

Behaviors

  • generateEmailVerificationToken — crea y devuelve un token aleatorio de 32 bytes en formato hexadecimal.
  • hashEmailVerificationToken — recibe un token, lo convierte a cadena con String(token) y devuelve su hash SHA-256 en hexadecimal.
  • EMAIL_VERIFICATION_TOKEN_TTL_MS — representa la ventana de validez del token, expresada en milisegundos.

[!WARNING] hashEmailVerificationToken aplica String(token) antes del hash. Eso significa que cualquier valor no string cambia a su representación textual primero.

Gotchas & edge cases

[!WARNING] La persistencia descrita en el comentario del archivo se limita al hash. El token en texto plano no es el dato que este helper persiste.

[!CAUTION] EMAIL_VERIFICATION_TOKEN_TTL_MS está expresado en milisegundos. Su valor no está en segundos ni en minutos.

Este helper está pensado para ser consumido por los flujos nombrados en el comentario del archivo: registerUser y resendEmailVerification. Su responsabilidad es mantener centralizada la generación del token y su transformación a hash, sin mezclar esa lógica con otros pasos del proceso.

El único import externo verificado en este archivo es crypto, que aporta randomBytes y createHash para las dos operaciones principales.