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