import {
  Injectable,
  CanActivate,
  ExecutionContext,
  ForbiddenException,
} from '@nestjs/common';
import { JwtPayload } from '../../common/decorators/current-user.decorator';

@Injectable()
export class TenantGuard implements CanActivate {
  canActivate(context: ExecutionContext): boolean {
    const request = context.switchToHttp().getRequest();
    const user = request.user as JwtPayload;

    // Alle User (auch PLATFORM_ADMIN) muessen eine tenantId haben
    // um auf tenant-spezifische CRM-Ressourcen zuzugreifen.
    if (!user?.tenantId) {
      throw new ForbiddenException(
        'Kein Mandant zugeordnet. Bitte mit einem mandanten-gebundenen Account anmelden.',
      );
    }

    return true;
  }
}
