- docs/00-15: دراسة، بنية، محرك تعرفة، تسعير، نموذج استئجار، تكاملات، بيانات، realtime، خطة، devops، لاندنج، مخاطر، اصطلاحات سيرفر، تدفق نشر - backend/: NestJS 11 على Docker (health + tenants + عزل tenant_id + بادئة tripz_ + Redis DB 3) - apps/rider, apps/driver, dashboards/admin-web, dashboards/superadmin-web (هياكل) - sync-to-server.sh + .gitignore Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
21 lines
881 B
TypeScript
21 lines
881 B
TypeScript
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());
|
|
}
|
|
}
|