/** * Wrapper fino sobre bcrypt para que el resto del código no importe la lib. * Cost 10 (~100ms en hardware moderno) — suficiente para un admin interno. */ import bcrypt from "bcrypt"; const COST = 10; export async function hashPassword(plain) { if (!plain || typeof plain !== "string") throw new Error("password_required"); if (plain.length < 8) throw new Error("password_too_short"); return bcrypt.hash(plain, COST); } export async function verifyPassword(plain, hash) { if (!plain || !hash) return false; return bcrypt.compare(plain, hash); }