@anycms/oauth-client
v0.1.1
Published
OAuth2 认证 + 组织架构 API 客户端,面向 AnyCMS BFF 代理层。
Maintainers
Readme
@anycms/oauth-client
OAuth2 认证 + 组织架构 API 客户端,面向 AnyCMS BFF 代理层。
安装
pnpm add @anycms/oauth-client快速开始
默认实例(推荐)
开箱即用,使用相对路径 + credentials: "include" 自动携带 cookie:
import { authApi, companyApi, departmentApi, orgUserApi, permissionApi } from "@anycms/oauth-client";
// 获取当前登录用户
const res = await authApi.me();
console.log(res.data); // { sub, name, nickname, email, ... }自定义配置
import { createOAuthClient } from "@anycms/oauth-client";
const client = createOAuthClient({
baseUrl: "https://api.example.com", // 可选,默认 ""
credentials: "include", // 可选,默认 "include"
});
client.auth.me();
client.org.companyApi.list({ page: 1, pageSize: 20 });也可以单独创建 Auth 或 Org API:
import { createAuthApi, createOrgApis } from "@anycms/oauth-client";
const auth = createAuthApi({ baseUrl: "https://api.example.com" });
const { companyApi, departmentApi, orgUserApi, permissionApi } = createOrgApis({ baseUrl: "https://api.example.com" });API 参考
AuthApi — 认证
| 方法 | 说明 | 返回类型 |
|------|------|----------|
| getLoginUrl() | 获取登录跳转 URL(/api/auth/login) | string |
| me() | 获取当前登录用户信息 | Promise<PaginatedResponse<OAuthUser>> |
| refresh() | 刷新 token | Promise<PaginatedResponse<{ expiresIn: number }>> |
| logout() | 退出登录 | Promise<PaginatedResponse<{ message: string }>> |
OrgApis — 组织架构
companyApi
| 方法 | 说明 |
|------|------|
| list(params?) | 公司列表,支持 { page, pageSize } |
| get(id) | 按 ID 获取公司 |
| getByCode(code) | 按编码获取公司 |
departmentApi
| 方法 | 说明 |
|------|------|
| get(id) | 获取部门详情 |
| tree(companyId) | 获取部门树形结构 |
| ancestors(id) | 获取祖先部门链 |
| descendants(id) | 获取后代部门 |
| users(id, params?) | 获取部门下用户,支持分页 |
| permissions(id) | 获取部门权限规则 |
orgUserApi
| 方法 | 说明 |
|------|------|
| departments(userId) | 获取用户所属部门 |
| list(params?) | 用户列表(含部门信息) |
| registeredUsers(params?) | 注册用户列表 |
| permissions(userId, resourceType) | 获取用户权限 |
| roles(userId, params?) | 获取用户角色 |
| rbacPermissions(userId, params?) | 获取用户 RBAC 权限 |
permissionApi
| 方法 | 说明 |
|------|------|
| check(req) | 权限检查 |
| definitions(params?) | 权限定义列表 |
权限检查请求
const result = await permissionApi.check({
userId: "user-123",
resourceType: "agent",
resourceId: "agent-456", // 可选
requiredPermission: "edit", // "read" | "use" | "edit" | "manage" | "owner"
});
// result.data: { hasPermission, matchedScope, matchedDepartmentId }类型
import type {
OAuthUser,
Company,
Department,
DepartmentTreeNode,
UserDepartment,
RegisteredUser,
PermissionCheckRequest,
PermissionCheckResult,
DepartmentPermission,
UserRole,
PermissionDefinition,
ApiResponse,
PaginatedResponse,
ClientConfig,
AuthApi,
OrgApis,
OAuthClient,
} from "@anycms/oauth-client";认证方式
浏览器场景推荐 cookie 方式(默认 credentials: "include"),也支持:
- Cookie(推荐)— 浏览器自动携带
oauth2_sid - Authorization Header —
Bearer <session_id> - Query 参数 —
?token=<session_id>(适用于 iframe、WebSocket)
License
MIT
