Pairing-用户配对、认证与信任管理 pairing

这是一个用于用户配对、认证和信任管理的技能,关键词包括'用户配对'、'信任级别'、'跨频道访问控制'。它提供了一套完整的API和命令行工具,用于管理新用户的配对请求、批准或拒绝这些请求,并维护用户的信任级别。

后端开发 0 次安装 0 次浏览 更新于 3/5/2026

配对 - 完整的API参考

配对新用户到Clodds,管理信任级别,并控制跨频道的访问。


聊天命令

配对(新用户)

/pair                                       请求配对(生成代码)
/pair-code ABC123                           输入配对代码
/unpair                                     移除你的配对

管理员命令

/pairing list                               列出待处理请求
/pairing approve <code>                     批准配对请求
/pairing reject <code>                      拒绝配对请求
/pairing users                              列出配对用户
/pairing remove <user>                      移除用户配对

信任管理

/trust <user> owner                         授予所有者信任
/trust <user> paired                        标准信任
/trust list                                列出信任级别

TypeScript API参考

创建配对服务

import { createPairingService } from 'clodds/pairing';

const pairing = createPairingService({
  // 代码设置
  codeLength: 8,
  codeExpiryMinutes: 60,
  maxPendingPerChannel: 3,

  // 自动批准设置
  autoApproveLocal: true,      // 自动批准localhost
  autoApproveTailscale: true,  // 自动批准Tailscale IP
  autoApproveOwners: true,     // 所有者自动批准他们的请求

  // 存储
  storage: 'sqlite',
  dbPath: './pairing.db',
});

创建配对请求

// 用户请求配对
const request = await pairing.createPairingRequest({
  channelId: 'telegram-123',
  userId: 'telegram-user-456',
  username: 'johndoe',
  displayName: 'John Doe',
});

console.log(`配对代码: ${request.code}`);
console.log(`过期时间: ${request.expiresAt}`);
console.log(`与管理员分享此代码以获得批准`);

验证代码

// 检查代码是否有效
const valid = await pairing.validateCode({
  code: 'ABC123XY',
});

if (valid) {
  console.log(`有效代码,用户: ${valid.username}`);
  console.log(`频道: ${valid.channelId}`);
}

批准请求

// 管理员批准配对
await pairing.approveRequest({
  code: 'ABC123XY',
  approvedBy: 'admin-user-id',
  trustLevel: 'paired',
});

拒绝请求

// 管理员拒绝配对
await pairing.rejectRequest({
  code: 'ABC123XY',
  rejectedBy: 'admin-user-id',
  reason: '未知用户',
});

检查配对状态

// 检查用户是否配对
const isPaired = await pairing.isPaired({
  channelId: 'telegram-123',
  userId: 'telegram-user-456',
});

if (isPaired) {
  console.log('用户已配对,可以使用Clodds');
}

获取信任级别

const trust = await pairing.getTrustLevel({
  channelId: 'telegram-123',
  userId: 'telegram-user-456',
});

console.log(`信任级别: ${trust}`);
// 'owner' | 'paired' | 'stranger'

// 检查特定权限
if (trust === 'owner') {
  console.log('完全管理员权限');
} else if (trust === 'paired') {
  console.log('标准交易权限');
} else {
  console.log('无权限 - 必须先配对');
}

列出待处理请求

const pending = await pairing.listPendingRequests({
  channelId: 'telegram-123',  // 可选:按频道过滤
});

for (const req of pending) {
  console.log(`代码: ${req.code}`);
  console.log(`用户: ${req.username} (${req.displayName})`);
  console.log(`请求时间: ${req.createdAt}`);
  console.log(`过期时间: ${req.expiresAt}`);
}

列出配对用户

const users = await pairing.listPairedUsers({
  channelId: 'telegram-123',  // 可选:按频道过滤
});

for (const user of users) {
  console.log(`${user.username}: ${user.trustLevel}`);
  console.log(`配对时间: ${user.pairedAt}`);
  console.log(`批准人: ${user.approvedBy}`);
}

检查所有者状态

const isOwner = await pairing.isOwner({
  channelId: 'telegram-123',
  userId: 'telegram-user-456',
});

if (isOwner) {
  console.log('用户具有所有者权限');
}

移除配对

// 移除用户的配对
await pairing.removePairing({
  channelId: 'telegram-123',
  userId: 'telegram-user-456',
});

信任级别

级别 访问权限
所有者 完全管理员:批准用户,管理设置,交易
配对 标准:交易,投资组合,查询
陌生人 无:必须先配对

配对代码格式

  • 长度:8个字符
  • 字符:大写字母+数字
  • 排除:0, O, 1, I, L(避免混淆)
  • 示例ABC234XY

自动批准规则

条件 行为
本地主机 自动批准,赋予所有者信任
Tailscale IP 自动批准,赋予所有者信任
所有者请求 自动批准他们的其他频道

安全特性

特性 描述
代码过期 代码1小时后过期
速率限制 每个频道最多3个待处理
清晰代码 无易混淆字符
审计追踪 谁批准/拒绝,何时

CLI管理员命令

# 列出待处理配对请求
clodds pairing list telegram

# 批准请求
clodds pairing approve ABC234XY

# 列出配对用户
clodds pairing users telegram

# 直接添加用户(绕过代码)
clodds pairing add telegram user-123

# 移除用户
clodds pairing remove telegram user-123

最佳实践

  1. 安全分享代码 —— 不要在公共频道发布
  2. 适当设置过期时间 —— 对于敏感系统更短
  3. 定期审查待处理 —— 不要让请求堆积
  4. 谨慎使用所有者 —— 大多数用户只需要’配对’
  5. 定期审计 —— 审查谁有访问权限