@amaster.ai/admin-sdk (英语)
Amaster平台的服务器端管理器 SDK. 通过内部API管理用户,角色,权限和部门. 设计用途 边缘函数 (德诺)和Node.js后端——使用原生 fetch,没有浏览器 API.
边缘函数 QQ( AI ***)
62. 阿马斯特边缘功能 . . env SDK: 说吧
import { AdminSDK } from "npm:@amaster.ai/admin-sdk";
export default async function (request: Request, env: Env): Promise<Response> {
const admin = new AdminSDK({
appId: env.appId,
env: env.appEnv,
serviceKey: env.vars["APP_SECRET"],
});
// 权限校验
const { allow } = await admin.auth.checkPermission("user-uid", {
resource: "page",
action: "access",
});
if (!allow) return Response.json({ error: "Forbidden" }, { status: 403 });
// 创建用户
const user = await admin.users.create({
email: "[email protected]",
password: "Secure@123",
displayName: "New User",
});
return Response.json({ user });
}
参数映射数字 :env.appId - 开口env.appEnv {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}这里是env.vars["APP_SECRET"] {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}服务主题 BaseurL。
安装
pnpm add @amaster.ai/admin-sdk
# or
npm install @amaster.ai/admin-sdk
快速启动
import { AdminSDK } from "@amaster.ai/admin-sdk";
const admin = new AdminSDK({
baseURL: process.env.RUNTIME_URL || "http://localhost:3000",
appId: process.env.APP_ID!,
env: process.env.ENV || "dev",
serviceKey: process.env.SERVICE_KEY, // Required for internal API calls
});
// Check if a user can access a resource
const result = await admin.auth.checkPermission("user-uid-here", {
resource: "page",
action: "access",
resourceId: "dashboard",
});
if (!result.allow) throw new Error("Forbidden");
// Functional permission and data scope are separate. For model data,
// append rowFilter to the JSONQL query before reading or mutating rows.
// `scope === "none"` is represented by an always-false rowFilter.
const runtimeRowConstraint = result.rowFilter?.filter;
// Create a user
const user = await admin.users.create({
email: "[email protected]",
password: "Secure@123",
displayName: "New User",
});
// Assign a role to the user (use uid, not numeric id)
await admin.roles.assign(roleId, {
assigneeType: "user",
assigneeUid: user.uid,
});
环境变量
| 变量 | 说明 | 示例 |
|---|---|---|
RUNTIME_URL | 运行时服务基地 URL | http://runtime:3000 |
APP_ID | 应用程序 ID (x- tenant- id) | d9990247 |
ENV | 环境(x-env) | dev | prod |
SERVICE_KEY | 内部 API 认证的服务密钥 | (从Amaster控制台) |
API 概览
admin.auth ——权限检查(不需要用户令牌)
| 方法 | 说明 |
|---|---|
checkPermission(uid, { resource, action, resourceId? }) | 检查用户是否有权限 |
getRules(uid) | 为用户获取完整的ACL规则( 角色+权限) |
// Single permission check
const { allow, scope, resolved, rowFilter, roles, permissions } = await admin.auth.checkPermission(uid, {
resource: "order",
action: "read",
});
if (!allow) throw new Error("Forbidden");
// `own`, `dep`, `dep_and_sub`, `mixed`, and `none` all require the business
// data path to consume rowFilter. `none` contains an always-false condition.
const runtimeRowConstraint = rowFilter?.filter;
// Batch: fetch rules once, check locally
const rules = await admin.auth.getRules(uid);
const canExport = rules.permissions.some(
(p) => p.resource === "report" && p.action === "export"
);
admin.users ——用户 CRUD
| 方法 | 说明 |
|---|---|
list(params?) | 列表用户( pageination, search) |
get(uid) | 通过 UID 获取用户 |
create(params) | 创建用户 |
update(uid, params) | 更新用户 |
delete(uid) | 删除用户 |
const { list, total } = await admin.users.list({ query: "zhang", pageSize: 20 });
const user = await admin.users.get("abc-uid");
await admin.users.update(user.uid, { displayName: "New Name" });
admin.roles 角色管理
| 方法 | 说明 |
|---|---|
list() | 列出所有角色 |
get(id) | 通过ID获取角色 |
create(params) | 创建角色 |
update(id, params) | 更新角色 |
delete(id) | 删除角色( 仅非系统) |
assign(roleId, params) | 指定用户/配置/团队的角色 |
unassign(roleId, params) | 删除任务 |
listAssignees(roleId) | 职责受让人名单 |
getUserRoles(uid) | 获取指定给用户的角色 |
// Prefer assigneeUid for users
await admin.roles.assign(roleId, {
assigneeType: "user",
assigneeUid: user.uid,
});
// For department/team/role, use assigneeId
await admin.roles.assign(roleId, {
assigneeType: "department",
assigneeId: 5,
});
const roles = await admin.roles.getUserRoles(user.uid);
admin.permissions 授权定义和任务
| 方法 | 说明 |
|---|---|
list() | 列出所有权限 |
create(params) | 创建权限 |
update(id, params) | 更新权限 |
delete(id) | 删除权限 |
listForRole(roleId) | 列出一个角色的权限 |
assignToRole(roleId, params) | 指定角色权限 |
removeFromRole(roleId, permId) | 从角色中删除权限 |
updateRolePermissionScope(...) | 更新角色授权范围 |
assignToUser(uid, params) | 直接用户权限(例外) |
removeFromUser(uid, permId) | 删除用户权限 |
listForUser(uid) | 列出用户权限例外 |
updateUserPermissionScope(...) | 更新用户权限范围 |
const perm = await admin.permissions.create({
resource: "order",
action: "export",
name: "导出订单",
});
await admin.permissions.assignToRole(roleId, {
permissionId: perm.id,
scopeType: "dep",
});
// User-level override (bypasses role)
await admin.permissions.assignToUser(uid, {
permissionId: perm.id,
scopeType: "custom",
scopeFilter: JSON.stringify({ id: [1, 2, 3] }),
});
admin.departments 部门及成员
| 方法 | 说明 |
|---|---|
list() | 列出所有部门 |
get(id) | 联系部门 |
create(params) | 创建部门 |
update(id, params) | 更新部门 |
delete(id) | 删除部门 |
listUsers(id, includeChildren?) | 名单 部门成员 |
addUser(deptId, params) | 向部门添加用户( 使用用户Uid) |
removeUser(deptId, userUid) | 从部门删除用户 |
const dept = await admin.departments.create({ name: "技术部", parentId: 1 });
await admin.departments.addUser(dept.id, {
userUid: user.uid,
position: "工程师",
isPrimary: true,
});
await admin.departments.removeUser(dept.id, user.uid);
Deno / 边缘函数
边缘功能 npm: 页:1 env 获取(QQEDGE 函数 QQ)。
标识符: UID vs 数字 ID
- 用户编号 (弦等为.
"abc-123-def": 主要用户标识符. 用于users.get/update/delete, (中文(简体) ),roles.assign(Assigneee Uid), (英语),departments.addUser/removeUser, (中文(简体) ),auth.checkPermission, (中文(简体) ),permissions.assignToUser。 。 。 . - 数字标识 (数字):数据库编号。 用于角色,权限,部门和角色指定者取景. API支持时优先使用UID.
类型(AI参考)
所有类型都从包中导出. 关键:
| 类型 | 使用大小写 |
|---|---|
AdminSDKOptions | 构造选项 |
CheckPermissionParams, (中文(简体) ), CheckPermissionResult | auth.checkPermission |
CreateUserParams, (中文(简体) ), CreateUserResult, (中文(简体) ), UserDetail | 用户 CRUD |
RoleAssignParams, (中文(简体) ), Role | 角色分配(使用) assigneeUid (供用户使用) |
AssignPermissionToRoleParams, (中文(简体) ), AssignPermissionToUserParams | 权限指派 |
AddDepartmentMemberParams | 部门成员(使用) userUid(中文(简体) ) |
import type { AdminSDKOptions, CreateUserParams, RoleAssignParams } from "@amaster.ai/admin-sdk";
处理错误
import { AdminSDK, AdminSDKError } from "@amaster.ai/admin-sdk";
try {
await admin.users.get("invalid-uid");
} catch (err) {
if (err instanceof AdminSDKError) {
console.error(err.status, err.message); // 404, "user not found"
}
}
许可证
麻省理工学院
将一个已有的用户预设为 WeCom
await admin.auth.bindUserOAuth(userUid, {
provider: "wecom",
providerUserId: "enterprise-member-userid",
});
只使用服务器 : POST /api/internal/auth/users/{uid}/oauth-bindings 与
环境范围服务密钥。边缘函数必须认证其呼叫器
并在调用前授权用户管理。 使用稳定的应用程序 UID,
不是数字数据库 ID 。 相同的约束是一意孤行的;冲突再起
409,永远不要移动一个身份。 失踪/残疾用户返回404人。 只有 WeCom 是
已支持。 使用来自预定企业的经核实的成员身份; 此操作
不获取 WeCom 联系信息或证明会员资格。 部署
在使用方法前匹配运行时端点.