refactor(auth): 去多身份/多端口——账号单一角色,删 user_identities/select-identity/多端口路由
- 删 UserIdentity 模型/IdentityRepository/db.identities,账号统一单一角色(users.role) - auth.py 去 select-identity/_identity_summaries,登录恒返回 identities=[];_login_response_for_user 按单角色签发 - 删多端口路由 rbac_government/investor/developer 及其 main 挂载 - seed 去多身份回填(_migrate_identities/_ensure_port_agents/多端身份/端口标签映射) - dependencies: require_port 去端口隔离(单角色放宽)、optional_current_user 修 identity_id 多余参数 - user_admin_service create_user 不再建端口身份;schemas 去 SelectIdentityRequest - 新增迁移 0014_drop_user_identities(drop user_identities 表) - 测试改写为单角色契约(登录空 identities、无 select-identity、账号级智能体) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -83,11 +83,14 @@ async def optional_current_user(
|
||||
user = await db.users.get_by_id(payload.get("sub"))
|
||||
if user is None or user.get("status") != "active":
|
||||
return None
|
||||
return await _resolve_identity(user, payload.get("identity_id"), db)
|
||||
return await _resolve_identity(user, db)
|
||||
|
||||
|
||||
def require_port(user: dict = Depends(get_current_user)) -> dict:
|
||||
"""按端口隔离的资源(如智能体):必须已解析出端口身份,否则 403。"""
|
||||
if not user.get("port"):
|
||||
raise HTTPException(status_code=403, detail="请先选择身份/端口")
|
||||
"""按端口隔离的资源(如智能体)—— 单角色后不再按端口隔离,仅要求已登录。
|
||||
|
||||
账号唯一角色:智能体不再按端口隔离,统一归到该账号(port="")。为兼容
|
||||
既有 AgentRepository 的 port 过滤,这里补一个恒定空串。
|
||||
"""
|
||||
user.setdefault("port", "")
|
||||
return user
|
||||
|
||||
Reference in New Issue
Block a user