import { Request, Response, NextFunction } from "express";
import { ForbiddenError } from "../errors/http-errors";
import { prisma } from "../../config/prisma";

export async function tenantMiddleware(
  req: Request,
  _res: Response,
  next: NextFunction
) {
  if (req.tenantId) {
    return next();
  }

  // JWT missing organizationId — try to resolve from DB
  if (req.user?.id) {
    const user = await prisma.user.findUnique({
      where: { id: req.user.id },
      select: { organizationId: true },
    });
    if (user?.organizationId) {
      req.tenantId = user.organizationId;
      req.user.organizationId = user.organizationId;
      return next();
    }
  }

  throw new ForbiddenError("No tenant context on request");
}
