Skip to content

组织成员管理

本文档说明如何管理组织内的成员关系,包括添加成员、移除成员、查看成员列表,以及为成员分配组织角色。

接口概览

方法路径说明
GET/api/v1/organizations/:id/users获取组织成员列表
POST/api/v1/organizations/:id/users添加组织成员
DELETE/api/v1/organizations/:id/users/:userId移除组织成员
GET/api/v1/organizations/:id/users/:userId/roles获取成员的组织角色
PUT/api/v1/organizations/:id/users/:userId/roles为成员分配组织角色

添加组织成员

将一个或多个用户添加为组织成员。支持批量操作。

请求

POST /api/v1/organizations/:id/users
Content-Type: application/json

路径参数

参数类型必填说明
idstring组织 ID

请求体

字段类型必填说明
user_idsstring[]用户 ID 数组

请求示例

json
{
  "user_ids": [
    "user_abc123def456ghi7",
    "user_def456ghi789jkl0",
    "user_ghi789jkl012mno3"
  ]
}

响应示例

json
{
  "code": 0,
  "message": "success",
  "data": null
}

错误情况

错误码说明
400user_ids 为空或格式不正确
404组织不存在,或某个用户 ID 不存在
409用户已经是该组织的成员

说明

  • 添加成员时仅建立成员关系,不会自动分配角色
  • 新成员默认没有任何组织角色,需要通过角色分配接口单独设置
  • 如果数组中部分用户已是成员,可能会返回冲突错误

移除组织成员

从组织中移除一个成员。移除后该用户在该组织中的所有角色分配也将被清除。

请求

DELETE /api/v1/organizations/:id/users/:userId

路径参数

参数类型必填说明
idstring组织 ID
userIdstring用户 ID

响应示例

json
{
  "code": 0,
  "message": "success",
  "data": null
}

错误情况

错误码说明
404组织不存在,或用户不是该组织的成员

说明

  • 移除成员会自动清除该成员在此组织中的所有角色分配(organization_user_roles 记录)
  • 用户本身不会被删除,仅解除与该组织的关联
  • 用户在其他组织中的成员身份和角色不受影响

获取组织成员列表

查询指定组织的所有成员,支持分页。

请求

GET /api/v1/organizations/:id/users?page=1&page_size=20

路径参数

参数类型必填说明
idstring组织 ID

查询参数

参数类型必填说明
pageinteger页码,默认 1
page_sizeinteger每页数量,默认 20

响应示例

json
{
  "code": 0,
  "message": "success",
  "data": {
    "list": [
      {
        "id": "user_abc123def456ghi7",
        "username": "zhangsan",
        "primary_email": "zhangsan@example.com",
        "name": "张三",
        "avatar": "https://cdn.example.com/avatars/zhangsan.png"
      },
      {
        "id": "user_def456ghi789jkl0",
        "username": "lisi",
        "primary_email": "lisi@example.com",
        "name": "李四",
        "avatar": null
      }
    ],
    "total": 2,
    "page": 1,
    "page_size": 20
  }
}

获取成员的组织角色

查询某个成员在指定组织中拥有的所有角色。

请求

GET /api/v1/organizations/:id/users/:userId/roles

路径参数

参数类型必填说明
idstring组织 ID
userIdstring用户 ID

响应示例

json
{
  "code": 0,
  "message": "success",
  "data": [
    {
      "id": "role_abc123def456ghi7",
      "name": "admin",
      "description": "Organization administrator with full access",
      "created_at": "2026-01-01T00:00:00Z"
    },
    {
      "id": "role_def456ghi789jkl0",
      "name": "member",
      "description": "Regular member",
      "created_at": "2026-01-01T00:00:00Z"
    }
  ]
}

说明

  • 返回的角色是该用户在此特定组织中被分配的角色
  • 同一用户在不同组织中的角色可能完全不同
  • 如果用户尚未被分配任何角色,返回空数组

为成员分配组织角色

为指定成员在组织内分配角色。使用 PUT 语义,传入的角色列表将完全替换该成员当前在此组织中的所有角色。

请求

PUT /api/v1/organizations/:id/users/:userId/roles
Content-Type: application/json

路径参数

参数类型必填说明
idstring组织 ID
userIdstring用户 ID

请求体

字段类型必填说明
role_idsstring[]组织角色模板 ID 数组

请求示例

json
{
  "role_ids": [
    "role_abc123def456ghi7",
    "role_def456ghi789jkl0"
  ]
}

响应示例

json
{
  "code": 0,
  "message": "success",
  "data": null
}

错误情况

错误码说明
400role_ids 格式不正确
404组织不存在、用户不是该组织成员、或某个角色模板不存在

说明

  • 使用 PUT 语义,传入的角色列表将完全替换成员在此组织中的原有角色
  • 传入空数组 [] 将清除该成员在此组织中的所有角色
  • role_ids 中的 ID 必须是已创建的组织角色模板 ID
  • 用户必须先是组织成员才能分配角色

跨组织角色差异

Code Bird Cloud 的组织 RBAC 核心特性之一是支持同一用户在不同组织中拥有不同角色。以下场景说明了这一设计的实际应用:

场景:SaaS 顾问

张三是一位 IT 顾问,同时为两家客户公司提供服务:

张三的组织角色:
├── Company Alpha
│   ├── admin         (管理全部设置)
│   └── member        (日常操作)

└── Company Beta
    └── viewer        (仅查看报表)

操作步骤

bash
# 1. 将张三添加到 Company Alpha
curl -X POST /api/v1/organizations/{alpha_id}/users \
  -d '{"user_ids": ["{zhangsan_id}"]}'

# 2. 在 Company Alpha 中分配 admin + member 角色
curl -X PUT /api/v1/organizations/{alpha_id}/users/{zhangsan_id}/roles \
  -d '{"role_ids": ["{admin_role_id}", "{member_role_id}"]}'

# 3. 将张三添加到 Company Beta
curl -X POST /api/v1/organizations/{beta_id}/users \
  -d '{"user_ids": ["{zhangsan_id}"]}'

# 4. 在 Company Beta 中分配 viewer 角色
curl -X PUT /api/v1/organizations/{beta_id}/users/{zhangsan_id}/roles \
  -d '{"role_ids": ["{viewer_role_id}"]}'

# 5. 查看张三所属的组织
curl -X GET /api/v1/users/{zhangsan_id}/organizations

# 6. 查看张三在 Company Alpha 中的角色
curl -X GET /api/v1/organizations/{alpha_id}/users/{zhangsan_id}/roles

# 7. 查看张三在 Company Beta 中的角色
curl -X GET /api/v1/organizations/{beta_id}/users/{zhangsan_id}/roles

这种设计使得在应用层可以根据用户当前所在组织的角色,精确控制其访问权限。

Released under the MIT License.