feat(infisical-pg): completed secret rotation with queue service

This commit is contained in:
Akhil Mohan
2024-01-27 12:38:23 +05:30
parent 17e61bfc68
commit 784cdb4201
64 changed files with 3093 additions and 459 deletions
@@ -14,7 +14,7 @@ export const useUpdateSecretApprovalReviewStatus = () => {
return useMutation<{}, {}, TUpdateSecretApprovalReviewStatusDTO>({
mutationFn: async ({ id, status }) => {
const { data } = await apiRequest.post(`/api/v1/secret-approval-requests/${id}/review`, {
const { data } = await apiRequest.post(`/api/ee/v1/secret-approval-requests/${id}/review`, {
status
});
return data;
@@ -30,7 +30,7 @@ export const useUpdateSecretApprovalRequestStatus = () => {
return useMutation<{}, {}, TUpdateSecretApprovalRequestStatusDTO>({
mutationFn: async ({ id, status }) => {
const { data } = await apiRequest.post(`/api/v1/secret-approval-requests/${id}/status`, {
const { data } = await apiRequest.post(`/api/ee/v1/secret-approval-requests/${id}/status`, {
status
});
return data;
@@ -47,7 +47,7 @@ export const usePerformSecretApprovalRequestMerge = () => {
return useMutation<{}, {}, TPerformSecretApprovalRequestMerge>({
mutationFn: async ({ id }) => {
const { data } = await apiRequest.post(`/api/v1/secret-approval-requests/${id}/merge`);
const { data } = await apiRequest.post(`/api/ee/v1/secret-approval-requests/${id}/merge`);
return data;
},
onSuccess: (_, { id, workspaceId }) => {
@@ -15,12 +15,12 @@ import { UserWsKeyPair } from "../keys/types";
import { decryptSecrets } from "../secrets/queries";
import { DecryptedSecret } from "../secrets/types";
import {
CommitType,
TGetSecretApprovalRequestCount,
TGetSecretApprovalRequestDetails,
TGetSecretApprovalRequestList,
TSecretApprovalRequest,
TSecretApprovalRequestCount,
TSecretApprovalSecChange,
TSecretApprovalSecChangeData
} from "./types";
@@ -96,7 +96,7 @@ const fetchSecretApprovalRequestList = async ({
offset
}: TGetSecretApprovalRequestList) => {
const { data } = await apiRequest.get<{ approvals: TSecretApprovalRequest[] }>(
"/api/v1/secret-approval-requests",
"/api/ee/v1/secret-approval-requests",
{
params: {
workspaceId,
@@ -158,7 +158,7 @@ const fetchSecretApprovalRequestDetails = async ({
id
}: Omit<TGetSecretApprovalRequestDetails, "decryptKey">) => {
const { data } = await apiRequest.get<{ approval: TSecretApprovalRequest }>(
`/api/v1/secret-approval-requests/${id}`
`/api/ee/v1/secret-approval-requests/${id}`
);
return data.approval;
@@ -173,7 +173,7 @@ export const useGetSecretApprovalRequestDetails = ({
UseQueryOptions<
TSecretApprovalRequest,
unknown,
TSecretApprovalRequest<TSecretApprovalSecChange, DecryptedSecret>,
TSecretApprovalRequest<DecryptedSecret>,
ReturnType<typeof secretApprovalRequestKeys.detail>
>,
"queryKey" | "queryFn"
@@ -184,11 +184,12 @@ export const useGetSecretApprovalRequestDetails = ({
queryFn: () => fetchSecretApprovalRequestDetails({ id }),
select: (data) => ({
...data,
commits: data.commits.map(({ secretVersion, op, newVersion, secret }) => ({
commits: data.commits.map(({ secretVersion, op, secret, ...newVersion }) => ({
op,
secret,
secretVersion: secretVersion ? decryptSecrets([secretVersion], decryptKey)[0] : undefined,
newVersion: newVersion ? decryptSecretApprovalSecret(newVersion, decryptKey) : undefined
newVersion:
op !== CommitType.DELETE ? decryptSecretApprovalSecret(newVersion, decryptKey) : undefined
}))
}),
enabled: Boolean(id && decryptKey) && (options?.enabled ?? true)
@@ -196,7 +197,7 @@ export const useGetSecretApprovalRequestDetails = ({
const fetchSecretApprovalRequestCount = async ({ workspaceId }: TGetSecretApprovalRequestCount) => {
const { data } = await apiRequest.get<{ approvals: TSecretApprovalRequestCount }>(
"/api/v1/secret-approval-requests/count",
"/api/ee/v1/secret-approval-requests/count",
{ params: { workspaceId } }
);
@@ -42,10 +42,7 @@ export type TSecretApprovalSecChange = {
tags?: string[];
};
export type TSecretApprovalRequest<
T extends unknown = TSecretApprovalSecChangeData,
J extends unknown = EncryptedSecret
> = {
export type TSecretApprovalRequest<J extends unknown = EncryptedSecret> = {
id: string;
slug: string;
createdAt: string;
@@ -63,14 +60,13 @@ export type TSecretApprovalRequest<
policy: TSecretApprovalPolicy;
statusChangeBy: string;
conflicts: Array<{ secretId: string; op: CommitType.UPDATE }>;
commits: {
commits: ({
// if there is no secret means it was creation
secret?: { version: number };
secretVersion: J;
// if there is no new version its for Delete
newVersion?: T;
op: CommitType;
}[];
} & TSecretApprovalSecChangeData)[];
};
export type TSecretApprovalRequestCount = {