tenant/tenant/init.py
yumoqing d8eea22b89 feat: tenant 多租户域名管理模块
- tenant_domain 表: domain → resellerid 映射, UNIQUE(domain)
- init.py: get_domain_by_host() 根据域名查找分销商
- index.ui: Tabular CRUD 管理界面
- load_path.py: RBAC 权限注册
2026-06-30 15:35:08 +08:00

26 lines
811 B
Python

"""
Tenant module — 多租户域名管理
每个分销商可申请独立域名,客户在其域名注册即绑定为该分销商的客户。
"""
from ahserver.serverenv import ServerEnv
from sqlor.dbpools import get_sor_context
MODULE_NAME = "tenant"
async def get_domain_by_host(request, host):
"""根据请求域名查找对应的分销商"""
env = request._run_ns
domain = host.split(':')[0]
async with get_sor_context(env, 'tenant') as sor:
sql = """SELECT resellerid, orgid FROM tenant_domain
WHERE domain = ${domain}$ AND status = 'active'
LIMIT 1"""
recs = await sor.sqlExe(sql, {'domain': domain})
return recs[0] if recs else None
def load_tenant():
env = ServerEnv()
env.get_domain_by_host = get_domain_by_host