功能简介
Organization Membership 把用户加入组织,并用 Owner、Admin、Developer、Editor、Analyst、Billing 等角色限制控制面操作。邀请、确认、角色更新与移除是不同状态转换,不能只靠前端隐藏按钮实现权限。
当前支持范围
- 组织成员与角色(APPBASE_ENHANCED):在组织范围邀请、确认、变更和移除成员,并以 Owner、Admin、Developer、Editor、Analyst、Billing 角色约束管理权限。
适用场景
- 邀请团队成员进入同一 Organization。
- 按职责分离管理、开发、只读分析与账务权限。
- 审查高权限成员和待确认邀请。
前置条件
- 目标 Organization 已存在。
- 邀请者拥有成员管理权限。
- 确认链接使用的 Session 与受邀身份一致。
Console 操作路径
Console → Organization → Members。邀请时选择角色;待确认成员完成邀请后变为 active。角色变更和移除操作会根据当前操作者与 Owner 保护规则显示或拒绝。
SDK 示例
SDK · TypeScript
import { Client, SelfHostedOrganizations } from 'appbase-console-sdk';
const client = new Client().setEndpoint('https://<APPBASE_HOST>/v1');
const organizations = new SelfHostedOrganizations(client);
await organizations.createMembership({
organizationId: '<ORGANIZATION_ID>',
email: '<INVITEE_EMAIL>',
role: 'developer',
url: 'https://<CONSOLE_HOST>/invite'
});REST 示例
REST · Bash
curl 'https://<APPBASE_HOST>/v1/organizations/<ORGANIZATION_ID>/memberships' \
-X POST \
-H 'Cookie: <CONSOLE_SESSION_COOKIE>' \
-H 'Content-Type: application/json' \
--data '{"email":"<INVITEE_EMAIL>","role":"developer","url":"https://<CONSOLE_HOST>/invite"}'常见错误
| 现象 | 处理建议 |
|---|---|
401 | 邀请者没有有效 Console Session。 |
403 | 当前角色不能管理成员,或操作触发 Owner 保护。 |
409 | 重复邀请、成员已存在或状态转换冲突。 |
当前限制
- 角色控制 Organization 管理权限,不自动替代 Row/File 等资源 Permission。
- 邮件投递仍依赖实例的邮件配置;可用邀请 API 不等于邮件一定送达。
- 成员上限取决于组织配额与实例配置。
Appwrite 兼容说明
角色名称和组织控制面为 AppBase 实现;应用内 Teams 与 Organization Membership 不是可互换概念。
AppBase 增强说明
AppBase 把组织治理从 Project 内资源权限中分离,提供明确的邀请状态、角色集合和审计路径。
发布状态和验证 Commit
origin/main 已核验。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353。
权威来源文件列表
backend-candidate:src/Appwrite/Platform/Modules/Organizations/Http/Memberships/backend-candidate:tests/e2e/Services/Organizations/OrganizationsConsoleClientTest.phpfrontend-candidate:console/src/routes/(console)/organization-[organization]/members/
Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs。上游页面不是 AppBase 实现证据。