Utilidades de contraseñas

Overview

El archivo services/api/src/utils/passwords.js centraliza dos operaciones de seguridad para contraseñas: generar hashes y comparar contraseñas en texto plano contra hashes almacenados. El módulo usa bcryptjs y fija SALT_ROUNDS en 10 para ambas operaciones.

Este archivo pertenece a la capa de utilidades del backend API. Su propósito es ofrecer funciones reutilizables para manejar credenciales sin duplicar lógica de hashing o verificación.

[!NOTE] Ambas funciones son async y devuelven una Promise.

How it works

El módulo importa bcrypt desde bcryptjs y define una constante interna llamada SALT_ROUNDS. Luego expone dos funciones públicas: hashPassword y comparePassword.

  • hashPassword(plainPassword) llama a bcrypt.hash(plainPassword, SALT_ROUNDS).
  • comparePassword(plainPassword, passwordHash) llama a bcrypt.compare(plainPassword, passwordHash).

En conjunto, el archivo cubre el ciclo básico de contraseñas:

  • convertir una contraseña en un hash seguro;
  • verificar si una contraseña coincide con un hash existente.

Key components

{
    "title": "passwords.js",
    "content": "M\u00f3dulo de utilidades para hashing y verificaci\u00f3n de contrase\u00f1as con bcryptjs. Expone helpers reutilizables para la capa API.",
    "type": "function",
    "filePath": "services/api/src/utils/passwords.js",
    "badges": [
        "public"
    ]
}
{
    "title": "hashPassword",
    "content": "Funci\u00f3n p\u00fablica as\u00edncrona que recibe una contrase\u00f1a en texto plano y devuelve su hash generado con bcrypt y SALT_ROUNDS.",
    "type": "function",
    "filePath": "services/api/src/utils/passwords.js",
    "badges": [
        "public"
    ]
}
{
    "title": "comparePassword",
    "content": "Funci\u00f3n p\u00fablica as\u00edncrona que compara una contrase\u00f1a en texto plano con un hash bcrypt y devuelve el resultado de la verificaci\u00f3n.",
    "type": "function",
    "filePath": "services/api/src/utils/passwords.js",
    "badges": [
        "public"
    ]
}

Data & fields

[
    {
        "name": "SALT_ROUNDS",
        "type": "number",
        "required": true,
        "description": "Número de rondas de sal usado por bcrypt para generar hashes en este módulo."
    },
    {
        "name": "plainPassword",
        "type": "string",
        "required": true,
        "description": "Contraseña en texto plano que se hashea o compara."
    },
    {
        "name": "passwordHash",
        "type": "string",
        "required": true,
        "description": "Hash bcrypt contra el que se compara la contraseña en texto plano."
    }
]

Behaviors

  • hashPassword [badge:public] — Genera un hash bcrypt a partir de plainPassword y devuelve el valor resultante.
  • comparePassword [badge:public] — Compara plainPassword con passwordHash y devuelve el resultado de bcrypt.compare.

Gotchas & edge cases

[!WARNING] El módulo no valida los valores de entrada. La función delega directamente en bcryptjs, por lo que el comportamiento depende de los argumentos recibidos.

[!IMPORTANT] SALT_ROUNDS está fijado en 10 dentro del archivo. No se recibe como parámetro externo.

[!NOTE] Este archivo no define rutas HTTP, controladores ni endpoints. Solo expone utilidades de uso interno.

Este módulo depende exclusivamente de bcryptjs y se ubica en services/api/src/utils. Por su forma de exportación, está pensado para ser reutilizado por otras partes del backend que necesiten hashing o verificación de contraseñas.