浏览全部文档 · 7/37

功能简介

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"}'

权限模型

成员列表、邀请、角色更新和移除分别使用 organizations/memberships Scope 与组织角色判定。Owner 保护、成员上限和最后一名 Owner 等约束由服务端执行。

常见错误

现象处理建议
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.php
  • frontend-candidate:console/src/routes/(console)/organization-[organization]/members/

Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs。上游页面不是 AppBase 实现证据。

继续阅读