mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 20:31:59 +00:00
fix: include deletion metadata in user API keys response
- Add isDeleted, deletedAt, deletedBy, deletedByType fields to getUserApiKeys service method - Include deletion fields in user routes API keys response - Add debug logging to dashboard component to troubleshoot deleted keys count - Ensure frontend can properly identify and count deleted API keys This fixes the issue where deleted API keys count was always showing 0 instead of the actual number of deleted keys. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -167,7 +167,12 @@ router.get('/api-keys', authenticateUser, async (req, res) => {
|
|||||||
// 不返回实际的key值,只返回前缀和后几位
|
// 不返回实际的key值,只返回前缀和后几位
|
||||||
keyPreview: key.key
|
keyPreview: key.key
|
||||||
? `${key.key.substring(0, 8)}...${key.key.substring(key.key.length - 4)}`
|
? `${key.key.substring(0, 8)}...${key.key.substring(key.key.length - 4)}`
|
||||||
: null
|
: null,
|
||||||
|
// Include deletion fields for deleted keys
|
||||||
|
isDeleted: key.isDeleted,
|
||||||
|
deletedAt: key.deletedAt,
|
||||||
|
deletedBy: key.deletedBy,
|
||||||
|
deletedByType: key.deletedByType
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -550,7 +550,12 @@ class ApiKeyService {
|
|||||||
dailyCostLimit: parseFloat(key.dailyCostLimit || 0),
|
dailyCostLimit: parseFloat(key.dailyCostLimit || 0),
|
||||||
userId: key.userId,
|
userId: key.userId,
|
||||||
userUsername: key.userUsername,
|
userUsername: key.userUsername,
|
||||||
createdBy: key.createdBy
|
createdBy: key.createdBy,
|
||||||
|
// Include deletion fields for deleted keys
|
||||||
|
isDeleted: key.isDeleted,
|
||||||
|
deletedAt: key.deletedAt,
|
||||||
|
deletedBy: key.deletedBy,
|
||||||
|
deletedByType: key.deletedByType
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -367,14 +367,21 @@ const loadUserProfile = async () => {
|
|||||||
const loadApiKeysStats = async () => {
|
const loadApiKeysStats = async () => {
|
||||||
try {
|
try {
|
||||||
const allApiKeys = await userStore.getUserApiKeys(true) // Include deleted keys
|
const allApiKeys = await userStore.getUserApiKeys(true) // Include deleted keys
|
||||||
const activeCount = allApiKeys.filter(
|
console.log('All API Keys received:', allApiKeys)
|
||||||
(key) => !(key.isDeleted === 'true' || key.deletedAt) && key.isActive
|
|
||||||
).length
|
|
||||||
const deletedCount = allApiKeys.filter(
|
|
||||||
(key) => key.isDeleted === 'true' || key.deletedAt
|
|
||||||
).length
|
|
||||||
|
|
||||||
apiKeysStats.value = { active: activeCount, deleted: deletedCount }
|
const activeKeys = allApiKeys.filter(
|
||||||
|
(key) => !(key.isDeleted === 'true' || key.deletedAt) && key.isActive
|
||||||
|
)
|
||||||
|
const deletedKeys = allApiKeys.filter(
|
||||||
|
(key) => key.isDeleted === 'true' || key.deletedAt
|
||||||
|
)
|
||||||
|
|
||||||
|
console.log('Active keys:', activeKeys)
|
||||||
|
console.log('Deleted keys:', deletedKeys)
|
||||||
|
console.log('Active count:', activeKeys.length)
|
||||||
|
console.log('Deleted count:', deletedKeys.length)
|
||||||
|
|
||||||
|
apiKeysStats.value = { active: activeKeys.length, deleted: deletedKeys.length }
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to load API keys stats:', error)
|
console.error('Failed to load API keys stats:', error)
|
||||||
apiKeysStats.value = { active: 0, deleted: 0 }
|
apiKeysStats.value = { active: 0, deleted: 0 }
|
||||||
|
|||||||
Reference in New Issue
Block a user