27 lines
809 B
TypeScript
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);
|
|
};
|
|
}
|