metis-desk/modules/identity/src/api/infrastructure/http/require-authenticated.ts
2026-10-10 12:01:58 +02:00

27 lines
809 B
TypeScript

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);
};
}