import { Injectable, NestMiddleware } from '@nestjs/common'; import { Request, Response, NextFunction } from 'express'; import { tenantContext } from './tenant.context'; /** * يستخرج معرّف المستأجر من الترويسة (أو الـ subdomain لاحقاً) ويضعه في السياق * لبقية دورة حياة الطلب. لا استعلام يمر بلا tenantId (راجع docs/06). */ @Injectable() export class TenantMiddleware implements NestMiddleware { use(req: Request, _res: Response, next: NextFunction) { const headerTenant = (req.headers['x-tenant-id'] as string) || (req.headers['x-tenant'] as string) || ''; // السوبر-آدمن قد لا يحمل مستأجراً محدداً — يُعالَج بحارس منفصل لاحقاً. tenantContext.run({ tenantId: headerTenant }, () => next()); } }