metis-desk/modules/identity/src/api/infrastructure/http/require-global-resource-manager.ts
2026-10-25 01:19:17 +02:00

27 lines
887 B
TypeScript

import type { RequestHandler } from "express";
import type { IdentityUseCases } from "../../application/identity.use-cases";
/** Guard público de resources.global.manage; no concede acceso a compañías ajenas. */
export function requireGlobalResourceManager(useCases: IdentityUseCases): RequestHandler {
return (request, response, next) => {
const { userId, authVersion } = request.session;
const context = userId && authVersion !== undefined ? { userId, authVersion } : undefined;
useCases
.canManageGlobalResources(context)
.then((result) => {
if (!result.isSuccess) {
response.status(result.error.code === "UNAUTHENTICATED" ? 401 : 403).json({
code: result.error.code,
requestId: response.getHeader("x-request-id"),
});
return;
}
next();
})
.catch(next);
};
}