Skip to content

Hasher (HasherService)

Puerto de dominio para hashear y verificar secretos (p. ej. passwords). La aplicación depende del puerto; la infraestructura aporta el adapter bcrypt.

Piezas base

PiezaRol
HasherServicePuerto: generateSalt(), hash(...), verify(...)
HASHER_SERVICE_TOKENToken Nest para inyectar el puerto
HasherBcryptAdapter con bcrypt
Password / Salt / HashedStringVOs de dominio para credenciales
EmailVO compartido de email con validación de formato
UseCase<T, U>Contrato genérico de casos de uso

Hoy HasherBcrypt se registra como provider en UsersModule (cuando hay database). Cuando haya más consumidores, conviene extraer un HasherModule compartido (mismo patrón que EventBusModule).

Uso típico en un use case

text
UserCreator
  │  @Inject(HASHER_SERVICE_TOKEN) hasher
  │  salt = await hasher.generateSalt()
  │  hashed = await hasher.hash(password, salt)
  │  User.createNew(..., hashed, salt)

UserRepository.save(user)

El dominio trabaja con VOs (Password, Salt, HashedString); el adapter bcrypt no debe filtrarse a capas superiores.

MIT License · Scaffold from backend-boiler