ForcePilot/backend/package/yuxi/channels/adapters/msteams/tenant.py
Kris bd60c15df0 feat(msteams): 新增完整的 Microsoft Teams 适配器模块
实现了 Teams 机器人所需的全功能组件,包括:
- 基础命令解析与帮助卡片生成
- 租户验证与访问控制
- 自定义 UA 与媒体工具
- 消息分块、批注处理与会话管理
- 防抖、缓存与配置路由能力
- 投票、配对、审计与运行时状态管理
- TTS 语音合成与卡片构建工具
- 群组管理与权限控制逻辑
2026-05-12 00:46:44 +08:00

35 lines
1.1 KiB
Python

"""Microsoft Teams 多租户验证与隔离。
验证 Activity 来源 Tenant 是否在允许列表中,支持
单租户和多租户两种模式。
"""
from __future__ import annotations
from yuxi.utils.logging_config import logger
class TenantValidator:
def __init__(self, allowed_tenants: set[str] | None = None):
self._allowed_tenants = allowed_tenants or set()
@property
def mode(self) -> str:
return "restricted" if self._allowed_tenants else "open"
def validate(self, channel_data: dict | None) -> bool:
if not self._allowed_tenants:
return True
tenant_id = ""
if channel_data:
tenant = channel_data.get("tenant")
if isinstance(tenant, dict):
tenant_id = tenant.get("id", "")
if tenant_id not in self._allowed_tenants:
logger.warning(f"MSTeams tenant '{tenant_id}' not in allowed_tenants")
return False
return True
def set_allowed_tenants(self, tenants: list[str]) -> None:
self._allowed_tenants = set(tenants)