- tenant_domain 表: domain → resellerid 映射, UNIQUE(domain) - init.py: get_domain_by_host() 根据域名查找分销商 - index.ui: Tabular CRUD 管理界面 - load_path.py: RBAC 权限注册
26 lines
811 B
Python
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
|