Organization team management
邀请成员、查看成员和邀请、更新非 owner 角色、移交 owner、移除非 owner 成员,并安全处理 401/403。
首次管理员会成为初始 organization 的 owner。登录后,可以读取当前 organization context、切换到当前 session 已可见的 organization、查看成员和邀请,并用 owner 或 admin role 管理成员。
这些操作需要有效的产品 session。HTTP/API 使用登录后的 cookie 或 authorization header。CLI 会从
APPALOFT_AUTH_COOKIE 或 APPALOFT_AUTHORIZATION 读取等价的 session 输入;不要把这些值写入 shell
history、CI 日志、仓库文件、issue 或 PR 评论。
appaloft organization context
appaloft organization switch org_second该命令返回当前用户、当前 organization、当前 role、可选 organization 和可用登录方式的安全元数据。 输出不会包含 session token、cookie、OAuth provider token、邀请 secret 或 deploy token 原始值。 切换命令只允许选择当前产品 session 已可见的 organization;重复选择当前 organization 是幂等操作。
appaloft organization members list --organization-id org_self_hosted
appaloft organization invitations list --organization-id org_self_hosted --status pending成员列表只返回 member id、用户安全元数据、role、加入时间等字段。邀请列表只返回安全邀请元数据, 不会返回原始邀请 token。
appaloft organization member invite --organization-id org_self_hosted --email operator@example.com --role developer
appaloft organization member role mem_operator --organization-id org_self_hosted --role admin
appaloft organization owner transfer mem_admin mem_operator --organization-id org_self_hosted
appaloft organization member remove mem_operator --organization-id org_self_hosted可用 role 是 owner、admin、developer、billing 和 viewer。Owner 和 admin 可以管理成员。
早期自托管构建会在 auth runtime 边界把默认 member role 映射回 Appaloft 的 developer,直到更完整
的自定义 role 持久化完成。
通用 role update 只能把非 owner 成员改成非 owner role,通用 remove member 只能移除非 owner 成员。
Owner 不能通过这两个操作被降级、升级出来或移除;需要改 owner 时使用
appaloft organization owner transfer <fromMemberId> <toMemberId>。移交成功后目标成员成为 owner,
原 owner 成为 admin。
同一套操作也可以通过 HTTP/API 调用:
GET /api/organizations/current-context
POST /api/organizations/current-context/switch
GET /api/organizations/{organizationId}/members
GET /api/organizations/{organizationId}/invitations
POST /api/organizations/{organizationId}/invitations
POST /api/organizations/{organizationId}/members/{memberId}/role
POST /api/organizations/{organizationId}/owner-transfer
DELETE /api/organizations/{organizationId}/members/{memberId}HTTP/API routes 和 CLI 都执行同一组 Appaloft 操作。Auth runtime 是实现细节,调用方不需要也不应该 依赖底层 auth route、table 或 provider payload。
Web console 的 /organization 页面可以读取当前 organization context、切换到另一个可见
organization、查看成员和邀请、邀请成员、更新非 owner role、移交 owner、移除非 owner 成员,并管理
deploy token 的创建、轮换和撤销。
浏览器端 self-hosted auth e2e 覆盖仍是后续 Phase 8 工作。
- 看到
401 product_auth_missing时,重新登录,或为 CLI 提供受信任的 session handoff。 - 看到
403 product_auth_forbidden时,确认当前用户属于目标 organization。成员管理和 deploy token 管理还需要 owner 或 admin role。 - 如果无法移除或降级成员,检查该成员是否是 owner。Owner 只能先移交给另一个成员。
- 不要直接编辑 auth 数据库表来绕过成员、role 或邀请状态;优先使用 CLI/HTTP/API 或从受信任备份恢复。