import type { RequestHandler } from "express"; import type { IdentityUseCases } from "../../application/identity.use-cases"; /** Servicio público HTTP de identidad para módulos que requieren sesión activa. */ export function requireAuthenticated(useCases: IdentityUseCases): RequestHandler { return (request, response, next) => { const { userId, authVersion } = request.session; const context = userId && authVersion !== undefined ? { userId, authVersion } : undefined; useCases .session(context) .then((user) => { if (!user) { response.status(401).json({ code: "UNAUTHENTICATED", requestId: response.getHeader("x-request-id")?.toString(), }); return; } next(); }) .catch(next); }; }