feat: add managed domains and TLS certificates management features

- Implemented ApplyLogItem interface for logging purposes.
- Created API functions for managing domains including CRUD operations.
- Developed ManagedDomainsPage component for domain management UI with form handling and state management.
- Defined ManagedDomainItem and related types for domain data structure.
- Added API functions for managing TLS certificates including creation, deletion, and file import.
- Built TlsCertificatesPage component for certificate management with manual and file import options.
- Introduced types for TLS certificate items and mutation payloads.
This commit is contained in:
ryan
2026-03-11 16:27:57 +08:00
parent 256d4e80b3
commit 5d6898b633
16 changed files with 1263 additions and 48 deletions
@@ -0,0 +1,37 @@
import { apiRequest } from '@/lib/api/client';
import type {
TlsCertificateFileImportPayload,
TlsCertificateItem,
TlsCertificateMutationPayload,
} from '@/features/tls-certificates/types';
export function getTlsCertificates() {
return apiRequest<TlsCertificateItem[]>('/tls-certificates/');
}
export function createTlsCertificate(payload: TlsCertificateMutationPayload) {
return apiRequest<TlsCertificateItem>('/tls-certificates/', {
method: 'POST',
body: JSON.stringify(payload),
});
}
export function importTlsCertificateFiles(payload: TlsCertificateFileImportPayload) {
const formData = new FormData();
formData.append('name', payload.name);
formData.append('remark', payload.remark);
formData.append('cert_file', payload.certFile);
formData.append('key_file', payload.keyFile);
return apiRequest<TlsCertificateItem>('/tls-certificates/import-file', {
method: 'POST',
body: formData,
});
}
export function deleteTlsCertificate(id: number) {
return apiRequest<void>(`/tls-certificates/${id}`, {
method: 'DELETE',
});
}