mirror of
https://github.com/APIParkLab/APIPark.git
synced 2026-06-14 20:41:15 +08:00
feat: add api key
This commit is contained in:
@@ -49,7 +49,6 @@ const AiSettingList = () => {
|
||||
const { fetchData } = useFetch()
|
||||
const [aiSettingList, setAiSettingList] = useState<AiSettingListItem[]>([])
|
||||
const [loading, setLoading] = useState<boolean>(false)
|
||||
// const [updateLoading, setUpdateLoading] = useState<boolean>(false)
|
||||
const modalRef = useRef<AiSettingModalContentHandle>()
|
||||
const { setAiConfigFlushed, accessData } = useGlobalContext()
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ const ApiKeyContent: React.FC<ApiKeyContentProps> = forwardRef(({ provider, enti
|
||||
|
||||
useEffect(() => {
|
||||
try {
|
||||
const isNeverExpire = entity.expire_time === '0'
|
||||
const isNeverExpire = entity.expire_time === 0
|
||||
setNeverExpire(isNeverExpire)
|
||||
form.setFieldsValue({
|
||||
name: entity.name,
|
||||
@@ -41,28 +41,22 @@ const ApiKeyContent: React.FC<ApiKeyContentProps> = forwardRef(({ provider, enti
|
||||
try {
|
||||
const values = await form.validateFields()
|
||||
const { expire_time, ...restValues } = values
|
||||
const expireTime = neverExpire ? '0' : expire_time?.format('YYYY-MM-DD HH:mm:ss')
|
||||
const expireTime = neverExpire ? 0 : expire_time.valueOf()
|
||||
|
||||
const [response, error] = await fetchData<BasicResponse<null>>('ai/resource/key', {
|
||||
method: 'POST',
|
||||
eoParams: { provider: provider?.id },
|
||||
const response = await fetchData<BasicResponse<null>>('ai/resource/key', {
|
||||
method: entity.id ? 'PUT' : 'POST',
|
||||
eoParams: { provider: provider?.id, id: entity.id },
|
||||
eoBody: { ...restValues, expire_time: expireTime },
|
||||
eoTransformKeys: ['config']
|
||||
})
|
||||
|
||||
if (error) {
|
||||
console.error('API request failed:', error)
|
||||
message.error($t(RESPONSE_TIPS.error))
|
||||
throw error
|
||||
}
|
||||
|
||||
const { code, msg } = response
|
||||
if (code === STATUS_CODE.SUCCESS) {
|
||||
message.success(msg || $t(RESPONSE_TIPS.success))
|
||||
return true
|
||||
} else {
|
||||
message.error(msg || $t(RESPONSE_TIPS.error))
|
||||
throw new Error(msg || $t(RESPONSE_TIPS.error))
|
||||
return false
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Validation failed:', error)
|
||||
|
||||
@@ -10,6 +10,7 @@ import { $t } from '@common/locales'
|
||||
import { checkAccess } from '@common/utils/permission'
|
||||
import AIProviderSelect, { AIProvider } from '@core/components/AIProviderSelect'
|
||||
import { App, Divider, Space, Typography } from 'antd'
|
||||
import dayjs from 'dayjs'
|
||||
import React, { useEffect, useRef, useState } from 'react'
|
||||
import ApiKeyContent from './components/ApiKeyContent'
|
||||
import { APIKey, EditAPIKey } from './types'
|
||||
@@ -45,7 +46,8 @@ const KeySettings: React.FC = () => {
|
||||
message.loading($t(RESPONSE_TIPS.loading))
|
||||
const { code, data, msg } = await fetchData<BasicResponse<{ info: EditAPIKey }>>('ai/resource/key', {
|
||||
method: 'GET',
|
||||
eoParams: { provider: selectedProvider, id: entity!.id }
|
||||
eoParams: { provider: selectedProvider, id: entity!.id },
|
||||
eoApiPrefix: 'http://uat.apikit.com:11204/mockApi/aoplatform/api/v1/'
|
||||
})
|
||||
message.destroy()
|
||||
if (code !== STATUS_CODE.SUCCESS) {
|
||||
@@ -58,7 +60,7 @@ const KeySettings: React.FC = () => {
|
||||
entity = {
|
||||
name: `key${total}`,
|
||||
config: provider.default_config,
|
||||
expire_time: '0'
|
||||
expire_time: 0
|
||||
} as EditAPIKey
|
||||
}
|
||||
const newEntity = entity as EditAPIKey
|
||||
@@ -67,10 +69,15 @@ const KeySettings: React.FC = () => {
|
||||
title: mode === 'add' ? $t(`添加 ${provider?.name} APIKey`) : $t('编辑 APIKey'),
|
||||
content: <ApiKeyContent ref={modalRef} entity={newEntity} provider={provider} />,
|
||||
onOk: () => {
|
||||
return modalRef.current?.handleOk().then((res) => {
|
||||
if (res === true) {
|
||||
pageListRef.current?.reload()
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
modalRef.current?.handleOk().then((res: boolean) => {
|
||||
if (res === true) {
|
||||
pageListRef.current?.reload()
|
||||
resolve(res)
|
||||
return
|
||||
}
|
||||
reject()
|
||||
})
|
||||
})
|
||||
},
|
||||
width: 600,
|
||||
@@ -305,7 +312,9 @@ const KeySettings: React.FC = () => {
|
||||
title: $t('过期时间'),
|
||||
dataIndex: 'expire_time',
|
||||
render: (dom: React.ReactNode, entity: APIKey) => {
|
||||
return entity.expire_time === '0' ? $t('永不过期') : entity.expire_time
|
||||
return entity.expire_time === 0
|
||||
? $t('永不过期')
|
||||
: dayjs(Number(entity.expire_time)).format('YYYY-MM-DD HH:mm:ss')
|
||||
}
|
||||
},
|
||||
...operation
|
||||
|
||||
@@ -1,14 +1,4 @@
|
||||
|
||||
export interface APIKey extends Record<string, unknown> {
|
||||
id: string
|
||||
name: string
|
||||
status: 'normal' | 'exceeded' | 'expired' | 'disabled' | 'error'
|
||||
use_token: number
|
||||
update_time: string
|
||||
expire_time: string
|
||||
can_delete: boolean
|
||||
priority: number
|
||||
}
|
||||
|
||||
export interface APIKey extends EditAPIKey {
|
||||
status: 'normal' | 'exceeded' | 'expired' | 'disabled' | 'error'
|
||||
@@ -22,5 +12,5 @@ export interface EditAPIKey {
|
||||
id?: string
|
||||
name: string
|
||||
config: string
|
||||
expire_time: string
|
||||
expire_time: number
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user