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_MSdefine 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 conString(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]
hashEmailVerificationTokenaplicaString(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_MSestá expresado en milisegundos. Su valor no está en segundos ni en minutos.
Related
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.