Skip to content

Commit b3d9e64

Browse files
Copilothotlong
andcommitted
Add Chinese documentation for organization implementation
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent 05a96d1 commit b3d9e64

File tree

1 file changed

+187
-0
lines changed

1 file changed

+187
-0
lines changed
Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
# 多租户组织管理实现说明
2+
3+
## 概述
4+
5+
本实现按照 Better-Auth 规范为 ObjectQL 添加了多租户组织管理功能。
6+
7+
## 实现内容
8+
9+
### 1. Better-Auth 组织插件集成
10+
11+
**文件:** `packages/server/src/auth/auth.client.ts`
12+
13+
已在 Better-Auth 配置中启用组织插件,包含以下功能:
14+
15+
- **动态访问控制**: 支持细粒度权限管理
16+
- **团队功能**: 支持子组织分组
17+
- **基于角色的访问控制**: 配置了三个默认角色:
18+
- `owner` (所有者): 对所有组织功能拥有完全访问权限
19+
- `admin` (管理员): 对成员、邀请和组织更新具有管理访问权限
20+
- `member` (成员): 对组织和成员具有只读访问权限
21+
22+
### 2. 对象模式定义
23+
24+
**位置:** `packages/better-auth/src/*.object.yml`
25+
26+
提供了7个对象模式,与 Better-Auth 的数据库模式保持一致:
27+
28+
1. **user.object.yml** - 具有认证字段的系统用户
29+
2. **account.object.yml** - 外部认证提供商 (OAuth)
30+
3. **session.object.yml** - 带令牌管理的用户会话
31+
4. **verification.object.yml** - 邮箱/手机验证令牌
32+
5. **organization.object.yml** - 多租户组织
33+
6. **member.object.yml** - 具有角色的组织成员
34+
7. **invitation.object.yml** - 具有过期时间的组织邀请
35+
36+
### 3. 包导出
37+
38+
**文件:** `packages/better-auth/src/index.ts`
39+
40+
该包现在导出:
41+
- `BetterAuthPackage` - 包元数据
42+
- `objectDefinitions` - 所有对象定义文件列表
43+
- `getObjectDefinitionPath(filename)` - 获取特定对象定义的路径
44+
- `getAllObjectDefinitionPaths()` - 获取所有对象定义的路径
45+
46+
### 4. API 端点
47+
48+
所有组织管理端点通过 Better-Auth 在 `/api/auth/` 自动公开:
49+
50+
#### 组织管理 (10个端点)
51+
- `POST /api/auth/organization/create` - 创建组织
52+
- `POST /api/auth/organization/update` - 更新组织
53+
- `DELETE /api/auth/organization/delete` - 删除组织
54+
- `POST /api/auth/organization/set-active` - 设置活动组织
55+
- `GET /api/auth/organization/get-full` - 获取完整组织详情
56+
- `GET /api/auth/organization/list` - 列出用户的组织
57+
- `GET /api/auth/organization/check-slug` - 检查标识可用性
58+
59+
#### 成员管理 (8个端点)
60+
- `POST /api/auth/organization/add-member` - 添加成员
61+
- `DELETE /api/auth/organization/remove-member` - 移除成员
62+
- `POST /api/auth/organization/update-member-role` - 更新成员角色
63+
- `GET /api/auth/organization/list-members` - 列出成员
64+
- `GET /api/auth/organization/get-active-member` - 获取当前成员
65+
- `GET /api/auth/organization/get-active-member-role` - 获取成员角色
66+
- `POST /api/auth/organization/leave` - 离开组织
67+
68+
#### 邀请管理 (7个端点)
69+
- `POST /api/auth/organization/invitation/create` - 创建邀请
70+
- `POST /api/auth/organization/invitation/cancel` - 取消邀请
71+
- `POST /api/auth/organization/invitation/accept` - 接受邀请
72+
- `POST /api/auth/organization/invitation/reject` - 拒绝邀请
73+
- `GET /api/auth/organization/invitation/get` - 获取邀请详情
74+
- `GET /api/auth/organization/invitation/list` - 列出组织邀请
75+
- `GET /api/auth/organization/invitation/list-user` - 列出用户邀请
76+
77+
#### 团队管理 (10个端点)
78+
- `POST /api/auth/organization/team/create` - 创建团队
79+
- `POST /api/auth/organization/team/update` - 更新团队
80+
- `DELETE /api/auth/organization/team/remove` - 删除团队
81+
- `POST /api/auth/organization/team/set-active` - 设置活动团队
82+
- `GET /api/auth/organization/team/list` - 列出组织团队
83+
- `GET /api/auth/organization/team/list-user` - 列出用户团队
84+
- `GET /api/auth/organization/team/list-members` - 列出团队成员
85+
- `POST /api/auth/organization/team/add-member` - 添加团队成员
86+
- `DELETE /api/auth/organization/team/remove-member` - 移除团队成员
87+
88+
#### 访问控制 (5个端点)
89+
- `POST /api/auth/organization/role/create` - 创建自定义角色
90+
- `POST /api/auth/organization/role/update` - 更新角色
91+
- `DELETE /api/auth/organization/role/delete` - 删除角色
92+
- `GET /api/auth/organization/role/list` - 列出角色
93+
- `GET /api/auth/organization/role/get` - 获取角色详情
94+
- `POST /api/auth/organization/has-permission` - 检查权限
95+
96+
**总计:36个组织管理端点**
97+
98+
## 基于角色的访问控制
99+
100+
### 权限模型
101+
102+
使用 Better-Auth 访问控制插件的 `role()` 函数定义角色:
103+
104+
```typescript
105+
import { role } from "better-auth/plugins/access";
106+
107+
const ownerRole = role({
108+
organization: ['create', 'read', 'update', 'delete'],
109+
member: ['create', 'read', 'update', 'delete'],
110+
invitation: ['create', 'read', 'delete'],
111+
team: ['create', 'read', 'update', 'delete']
112+
});
113+
```
114+
115+
### 默认角色
116+
117+
1. **Owner (所有者)**
118+
- 对所有组织资源的完全访问权限
119+
- 可以管理组织设置、成员、邀请和团队
120+
- 操作:创建、读取、更新、删除
121+
122+
2. **Admin (管理员)**
123+
- 可以更新组织设置
124+
- 完全的成员和邀请管理权限
125+
- 可以管理团队
126+
- 不能删除组织
127+
128+
3. **Member (成员)**
129+
- 对组织和成员的只读访问权限
130+
- 可以查看团队
131+
- 不能修改任何内容
132+
133+
## 数据库模式
134+
135+
组织插件自动创建以下数据库表:
136+
137+
- `organization` - 组织详情
138+
- `member` - 组织成员关系
139+
- `invitation` - 待处理的邀请
140+
- `team` - 组织团队 (如果启用)
141+
- `teamMember` - 团队成员关系 (如果启用)
142+
- `organizationRole` - 自定义角色 (如果启用动态访问控制)
143+
144+
这些表与 Better-Auth 的核心表(user、account、session、verification)集成。
145+
146+
## 测试与验证
147+
148+
`packages/server/scripts/` 中提供了两个验证脚本:
149+
150+
1. **verify-organization-plugin.js** - 快速验证插件是否已加载
151+
2. **inspect-organization.js** - 详细检查所有端点和插件配置
152+
153+
构建后运行:
154+
```bash
155+
cd packages/server
156+
npm run build
157+
node scripts/verify-organization-plugin.js
158+
node scripts/inspect-organization.js
159+
```
160+
161+
## 文档
162+
163+
完整文档位于:
164+
- `packages/better-auth/README.md` - 完整的 API 参考和使用指南
165+
- `docs/ORGANIZATION_IMPLEMENTATION.md` - 详细的实现指南(英文)
166+
167+
## 安全考虑
168+
169+
**安全扫描通过**: CodeQL 未检测到漏洞
170+
**代码审查**: 仅对测试脚本有小建议,生产代码干净
171+
**TypeScript**: 所有代码完全类型化且类型安全
172+
**Better-Auth**: 使用官方库,内置安全最佳实践
173+
174+
## 下一步
175+
176+
要使用此实现:
177+
178+
1. 设置 PostgreSQL 数据库
179+
2. 配置 `DATABASE_URL` 环境变量
180+
3. Better-Auth 将在首次使用时自动创建必要的表
181+
4. 使用组织端点管理多租户操作
182+
183+
## 参考资料
184+
185+
- [Better-Auth 文档](https://better-auth.com)
186+
- [Better-Auth 组织插件](https://better-auth.com/docs/plugins/organization)
187+
- [ObjectQL 文档](https://github.com/objectql/objectql)

0 commit comments

Comments
 (0)