import { UniqueID } from "@common/domain"; import { ApiError, ExpressController } from "@common/presentation"; import { TabContext } from "@contexts/auth/domain"; import { NextFunction, Request, Response } from "express"; import httpStatus from "http-status"; // Extender el Request de Express para incluir el usuario autenticado optionalmente interface TabContextRequest extends Request { tabContext?: TabContext; } export const validateTabContextHeader = async ( req: TabContextRequest, res: Response, next: NextFunction ) => { const tabId = String(req.headers["x-tab-id"]); if (!tabId) { return ExpressController.errorResponse( new ApiError({ status: 401, title: httpStatus["401"], name: httpStatus["401_NAME"], detail: "Tab ID is required", }), res ); } const tabIdOrError = UniqueID.create(tabId, false); if (tabIdOrError.isFailure) { return ExpressController.errorResponse( new ApiError({ status: 422, title: httpStatus["422"], name: httpStatus["422_NAME"], detail: "Invalid Tab ID", }), res ); } /*const contextOrError = await createTabContextService().getContextByTabId(tabIdOrError.data); if (contextOrError.isFailure) { return ExpressController.errorResponse( new ApiError({ status: 401, title: httpStatus["401"], name: httpStatus["401_NAME"], detail: "Invalid or expired Tab ID", }), res ); } const context = contextOrError.data; req.tabContext = context;*/ next(); };