保存当前API Key管理功能的修改

- 统一用户创建和admin创建API Key的逻辑
- 修复admin更新用户创建的API Key功能
- 用户创建API Key名称改为displayName
- 默认无限制配置

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
iRubbish
2025-08-26 13:42:02 +08:00
parent f31f7c9385
commit 82f545c3b0
7 changed files with 507 additions and 171 deletions

54
test-fixed-auto-link.js Normal file
View File

@@ -0,0 +1,54 @@
const jwt = require('jsonwebtoken');
const config = require('./config/config');
const fetch = require('node-fetch');
// 模拟创建一个包含displayName的JWT token
const userInfo = {
type: 'ad_user',
username: 'zhangji',
displayName: '张佶',
email: 'zhangji@weidian.com',
groups: ['CN=Weidian-IT组,OU=Weidian Groups,OU=微店,DC=corp,DC=weidian-inc,DC=com'],
loginTime: new Date().toISOString()
};
const token = jwt.sign(userInfo, config.security.jwtSecret, {
expiresIn: '8h'
});
console.log('测试修正后的自动关联功能');
console.log('用户displayName: 张佶');
async function testFixedAutoLink() {
try {
console.log('\n=== 测试获取用户API Keys ===');
const response = await fetch('http://localhost:3000/admin/ldap/user/api-keys', {
headers: {
'Authorization': `Bearer ${token}`
}
});
const result = await response.json();
console.log('\n结果:', JSON.stringify(result, null, 2));
if (result.success && result.apiKeys && result.apiKeys.length > 0) {
console.log('\n✅ 成功找到了关联的API Key:');
result.apiKeys.forEach(key => {
console.log(`- ID: ${key.id}`);
console.log(`- Name: ${key.name}`);
console.log(`- Key: ${key.key.substring(0, 10)}...${key.key.substring(key.key.length-10)}`);
console.log(`- Limit: ${key.limit}`);
console.log(`- Status: ${key.status}`);
});
} else {
console.log('\n❌ 没有找到关联的API Key');
}
} catch (error) {
console.error('测试错误:', error.message);
}
}
testFixedAutoLink();