import bcrypt from "bcryptjs"; const FORBIDDEN = new Set(["admin123", "password", "motdepasse", "12345678", "azertyuiop"]); export function hashPassword(plain: string): string { return bcrypt.hashSync(plain, 12); } export function verifyPassword(plain: string, hash: string): boolean { return bcrypt.compareSync(plain, hash); } /** Politique de mot de passe. Retourne null si valide, sinon le message d'erreur. */ export function passwordPolicyError(plain: string, opts?: { allowInitial?: boolean }): string | null { if (opts?.allowInitial) return null; // seed initial seulement if (plain.length < 10) return "Le mot de passe doit contenir au moins 10 caractères."; if (FORBIDDEN.has(plain.toLowerCase())) return "Ce mot de passe est trop courant — choisissez-en un autre."; return null; }