diff --git a/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx b/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx index 94358ed79..f3b389644 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx +++ b/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx @@ -46,8 +46,10 @@ export const usePerformSecretApprovalRequestMerge = () => { const queryClient = useQueryClient(); return useMutation<{}, {}, TPerformSecretApprovalRequestMerge>({ - mutationFn: async ({ id }) => { - const { data } = await apiRequest.post(`/api/v1/secret-approval-requests/${id}/merge`); + mutationFn: async ({ id, bypassReason }) => { + const { data } = await apiRequest.post(`/api/v1/secret-approval-requests/${id}/merge`, { + bypassReason + }); return data; }, onSuccess: (_, { id, workspaceId }) => { diff --git a/frontend/src/hooks/api/secretApprovalRequest/types.ts b/frontend/src/hooks/api/secretApprovalRequest/types.ts index f039cc815..ba7cbc38d 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/types.ts +++ b/frontend/src/hooks/api/secretApprovalRequest/types.ts @@ -133,4 +133,5 @@ export type TUpdateSecretApprovalRequestStatusDTO = { export type TPerformSecretApprovalRequestMerge = { id: string; workspaceId: string; + bypassReason?: string; }; diff --git a/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestAction.tsx b/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestAction.tsx index f3b9d7b1e..5948d2578 100644 --- a/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestAction.tsx +++ b/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestAction.tsx @@ -6,12 +6,13 @@ import { faLockOpen, faSquareCheck, faSquareXmark, + faTriangleExclamation, faUserLock} from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; -import { Button, Checkbox } from "@app/components/v2"; +import { Button, Checkbox, FormControl, Input } from "@app/components/v2"; import { usePerformSecretApprovalRequestMerge, useUpdateSecretApprovalRequestStatus @@ -48,12 +49,19 @@ export const SecretApprovalRequestAction = ({ useUpdateSecretApprovalRequestStatus(); const [byPassApproval, setByPassApproval] = useState(false); + const [bypassReason, setBypassReason] = useState(""); + + const isValidBypassReason = (value: string) => { + const trimmedValue = value.trim(); + return trimmedValue.length >= 10; + }; const handleSecretApprovalRequestMerge = async () => { try { await performSecretApprovalMerge({ id: approvalRequestId, - workspaceId + workspaceId, + bypassReason: byPassApproval ? bypassReason : undefined }); createNotification({ type: "success", @@ -92,7 +100,7 @@ export const SecretApprovalRequestAction = ({ if (!hasMerged && status === "open") { return ( -