update api key

This commit is contained in:
2026-04-16 11:01:30 +08:00
parent e29dd543de
commit a870793704
2 changed files with 90 additions and 0 deletions
+85
View File
@@ -0,0 +1,85 @@
import { api } from '@/utils/request'
import type { PaginatedData, ApiKeyRecord, AdminApiKeyFilters } from '@/types/api'
export const useAdminApiKeyStore = defineStore('admin-api-key', () => {
const keys = ref<ApiKeyRecord[]>([])
const loading = ref(false)
const pagination = reactive({
page: 1,
per_page: 15,
total: 0,
})
const filters = reactive<AdminApiKeyFilters>({
user_id: undefined,
enabled: undefined,
})
async function fetchAllKeys() {
loading.value = true
try {
const data = await api.get<PaginatedData<ApiKeyRecord>>('/api/v1/admin/api-keys', {
page: pagination.page,
per_page: pagination.per_page,
user_id: filters.user_id,
enabled: filters.enabled,
})
keys.value = data.items
pagination.total = data.total
pagination.page = data.page
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : '获取 API Key 列表失败'
message.error(msg)
} finally {
loading.value = false
}
}
async function toggleKey(id: number, enabled: boolean) {
try {
await api.patch(`/api/v1/admin/api-keys/${id}/toggle`, { enabled })
await fetchAllKeys()
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : '操作失败'
message.error(msg)
}
}
async function deleteKey(id: number) {
try {
await api.delete(`/api/v1/admin/api-keys/${id}`)
await fetchAllKeys()
message.success('已删除')
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : '删除失败'
message.error(msg)
}
}
async function toggleUserApiKeyEnabled(userId: number, enabled: boolean) {
try {
await api.patch(`/api/v1/users/${userId}/api-key-enabled`, { enabled })
await fetchAllKeys()
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : '操作失败'
message.error(msg)
}
}
function resetFilters() {
filters.user_id = undefined
filters.enabled = undefined
pagination.page = 1
}
return {
keys,
loading,
pagination,
filters,
fetchAllKeys,
toggleKey,
deleteKey,
toggleUserApiKeyEnabled,
resetFilters,
}
})
+5
View File
@@ -328,6 +328,11 @@ export interface ApiKeyCreateResult {
api_key: ApiKeyRecord api_key: ApiKeyRecord
} }
export interface AdminApiKeyFilters {
user_id: number | undefined
enabled: boolean | undefined
}
/** 业务异常 */ /** 业务异常 */
export class ApiError extends Error { export class ApiError extends Error {
code: number code: number