feat: completed frontend changes for new pki templates

This commit is contained in:
=
2025-05-30 17:53:21 +00:00
committed by Akhil Mohan
parent 86862b932c
commit 3a0e2bf88b
18 changed files with 1188 additions and 15 deletions
@@ -1,8 +1,11 @@
export {
useCreateCertTemplate,
useCreateCertTemplateV2,
useCreateEstConfig,
useDeleteCertTemplate,
useDeleteCertTemplateV2,
useUpdateCertTemplate,
useUpdateCertTemplateV2,
useUpdateEstConfig
} from "./mutations";
export { useGetCertTemplate, useGetEstConfig } from "./queries";
export { useGetCertTemplate, useGetEstConfig, useListCertificateTemplates } from "./queries";
@@ -8,9 +8,12 @@ import { certTemplateKeys } from "./queries";
import {
TCertificateTemplate,
TCreateCertificateTemplateDTO,
TCreateCertificateTemplateV2DTO,
TCreateEstConfigDTO,
TDeleteCertificateTemplateDTO,
TDeleteCertificateTemplateV2DTO,
TUpdateCertificateTemplateDTO,
TUpdateCertificateTemplateV2DTO,
TUpdateEstConfigDTO
} from "./types";
@@ -73,6 +76,58 @@ export const useDeleteCertTemplate = () => {
});
};
export const useCreateCertTemplateV2 = () => {
const queryClient = useQueryClient();
return useMutation<TCertificateTemplate, object, TCreateCertificateTemplateV2DTO>({
mutationFn: async (dto) => {
const { data } = await apiRequest.post<{
certificateTemplate: TCertificateTemplate;
}>("/api/v2/pki/certificate-templates", dto);
return data.certificateTemplate;
},
onSuccess: (_, { projectId }) => {
queryClient.invalidateQueries({ queryKey: certTemplateKeys.listTemplates({ projectId }) });
}
});
};
export const useUpdateCertTemplateV2 = () => {
const queryClient = useQueryClient();
return useMutation<TCertificateTemplate, object, TUpdateCertificateTemplateV2DTO>({
mutationFn: async (dto) => {
const { data } = await apiRequest.patch<{ certificateTemplate: TCertificateTemplate }>(
`/api/v2/pki/certificate-templates/${dto.templateName}`,
dto
);
return data.certificateTemplate;
},
onSuccess: (_, { projectId }) => {
queryClient.invalidateQueries({ queryKey: certTemplateKeys.listTemplates({ projectId }) });
}
});
};
export const useDeleteCertTemplateV2 = () => {
const queryClient = useQueryClient();
return useMutation<TCertificateTemplate, object, TDeleteCertificateTemplateV2DTO>({
mutationFn: async (dto) => {
const { data } = await apiRequest.delete<{ certificateTemplate: TCertificateTemplate }>(
`/api/v2/pki/certificate-templates/${dto.templateName}`,
{
data: {
projectId: dto.projectId
}
}
);
return data.certificateTemplate;
},
onSuccess: (_, { projectId }) => {
queryClient.invalidateQueries({ queryKey: certTemplateKeys.listTemplates({ projectId }) });
}
});
};
export const useCreateEstConfig = () => {
const queryClient = useQueryClient();
return useMutation<object, object, TCreateEstConfigDTO>({
@@ -2,10 +2,20 @@ import { useQuery } from "@tanstack/react-query";
import { apiRequest } from "@app/config/request";
import { TCertificateTemplate, TEstConfig } from "./types";
import {
TCertificateTemplate,
TCertificateTemplateV2,
TEstConfig,
TListCertificateTemplatesDTO
} from "./types";
export const certTemplateKeys = {
getCertTemplateById: (id: string) => [{ id }, "cert-template"],
listTemplates: ({ projectId, ...el }: { limit?: number; offset?: number; projectId: string }) => [
"list-template",
projectId,
el
],
getEstConfig: (id: string) => [{ id }, "cert-template-est-config"]
};
@@ -22,6 +32,29 @@ export const useGetCertTemplate = (id: string) => {
});
};
export const useListCertificateTemplates = ({
limit = 100,
offset = 0,
projectId
}: TListCertificateTemplatesDTO) => {
return useQuery({
queryKey: certTemplateKeys.listTemplates({ limit, offset, projectId }),
queryFn: async () => {
const { data } = await apiRequest.get<{
certificateTemplates: TCertificateTemplateV2[];
totalCount?: number;
}>("/api/v2/pki/certificate-templates", {
params: {
limit,
offset,
projectId
}
});
return data;
}
});
};
export const useGetEstConfig = (certificateTemplateId: string) => {
return useQuery({
queryKey: certTemplateKeys.getEstConfig(certificateTemplateId),
@@ -14,6 +14,26 @@ export type TCertificateTemplate = {
extendedKeyUsages: CertExtendedKeyUsage[];
};
export type TCertificateTemplateV2 = {
id: string;
caId: string;
caName: string;
projectId: string;
pkiCollectionId?: string;
name: string;
commonName: string;
subjectAlternativeName: string;
ttl: string;
keyUsages: CertKeyUsage[];
extendedKeyUsages: CertExtendedKeyUsage[];
updatedAt: string;
createdAt: string;
ca: {
name: string;
id: string;
};
};
export type TCreateCertificateTemplateDTO = {
caId: string;
pkiCollectionId?: string;
@@ -44,6 +64,34 @@ export type TDeleteCertificateTemplateDTO = {
projectId: string;
};
export type TCreateCertificateTemplateV2DTO = {
caId: string;
name: string;
commonName: string;
subjectAlternativeName: string;
ttl: string;
projectId: string;
keyUsages: CertKeyUsage[];
extendedKeyUsages: CertExtendedKeyUsage[];
};
export type TUpdateCertificateTemplateV2DTO = {
templateName: string;
caId?: string;
name?: string;
commonName?: string;
subjectAlternativeName?: string;
ttl?: string;
projectId: string;
keyUsages?: CertKeyUsage[];
extendedKeyUsages?: CertExtendedKeyUsage[];
};
export type TDeleteCertificateTemplateV2DTO = {
templateName: string;
projectId: string;
};
export type TCreateEstConfigDTO = {
certificateTemplateId: string;
caChain?: string;
@@ -67,3 +115,9 @@ export type TEstConfig = {
isEnabled: boolean;
disableBootstrapCertValidation: boolean;
};
export type TListCertificateTemplatesDTO = {
limit?: number;
offset?: number;
projectId: string;
};