update api key
This commit is contained in:
@@ -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,
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user