diff --git a/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/ComplianceScanConfigureForm.tsx b/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/ComplianceScanConfigureForm.tsx index 1760fa0698..596a88eb31 100644 --- a/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/ComplianceScanConfigureForm.tsx +++ b/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/ComplianceScanConfigureForm.tsx @@ -24,7 +24,7 @@ import { TruncatedText } from '@/components/TruncatedText'; import { ActionEnumType } from '@/features/postures/data-component/toggleControlApiAction'; import { invalidateAllQueries, queries } from '@/queries'; import { ComplianceScanNodeTypeEnum, isCloudNode, isCloudOrgNode } from '@/types/common'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; export const complianceType: { @@ -138,9 +138,10 @@ export const scanPostureApiAction = async ({ startComplianceScanResponse.error.response.status === 400 || startComplianceScanResponse.error.response.status === 409 ) { + const { message } = await getResponseErrors(startComplianceScanResponse.error); return { success: false, - message: startComplianceScanResponse.error.message ?? '', + message, }; } else if (startComplianceScanResponse.error.response.status === 403) { const message = await get403Message(startComplianceScanResponse.error); @@ -181,9 +182,10 @@ export const scanPostureApiAction = async ({ scheduleResponse.error.response.status === 400 || scheduleResponse.error.response.status === 409 ) { + const { message } = await getResponseErrors(scheduleResponse.error); return { success: false, - message: scheduleResponse.error.message ?? '', + message, }; } else if (scheduleResponse.error.response.status === 403) { const message = await get403Message(scheduleResponse.error); diff --git a/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/MalwareScanConfigureForm.tsx b/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/MalwareScanConfigureForm.tsx index 732eb1d52a..61632667bc 100644 --- a/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/MalwareScanConfigureForm.tsx +++ b/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/MalwareScanConfigureForm.tsx @@ -13,7 +13,7 @@ import { import { ScheduleScanForm } from '@/components/scan-configure-forms/ScheduleScanForm'; import { invalidateAllQueries } from '@/queries'; import { MalwareScanNodeTypeEnum } from '@/types/common'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { isNodeTypeARegistryTagType, isNodeTypeARegistryType } from '@/utils/registry'; @@ -157,9 +157,10 @@ export const scanMalwareApiAction = async ({ startMalwareScanResponse.error.response.status === 400 || startMalwareScanResponse.error.response.status === 409 ) { + const { message } = await getResponseErrors(startMalwareScanResponse.error); return { success: false, - message: startMalwareScanResponse.error.message ?? '', + message, }; } else if (startMalwareScanResponse.error.response.status === 403) { const message = await get403Message(startMalwareScanResponse.error); @@ -199,9 +200,10 @@ export const scanMalwareApiAction = async ({ scheduleResponse.error.response.status === 400 || scheduleResponse.error.response.status === 409 ) { + const { message } = await getResponseErrors(scheduleResponse.error); return { success: false, - message: scheduleResponse.error.message ?? '', + message, }; } else if (scheduleResponse.error.response.status === 403) { const message = await get403Message(scheduleResponse.error); diff --git a/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/SecretScanConfigureForm.tsx b/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/SecretScanConfigureForm.tsx index eecf021dcc..e4618194fd 100644 --- a/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/SecretScanConfigureForm.tsx +++ b/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/SecretScanConfigureForm.tsx @@ -13,7 +13,7 @@ import { import { ScheduleScanForm } from '@/components/scan-configure-forms/ScheduleScanForm'; import { invalidateAllQueries } from '@/queries'; import { SecretScanNodeTypeEnum } from '@/types/common'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { isNodeTypeARegistryTagType, isNodeTypeARegistryType } from '@/utils/registry'; @@ -156,9 +156,10 @@ export const scanSecretApiAction = async ({ startSecretScanResponse.error.response.status === 400 || startSecretScanResponse.error.response.status === 409 ) { + const { message } = await getResponseErrors(startSecretScanResponse.error); return { success: false, - message: startSecretScanResponse.error.message ?? '', + message, }; } else if (startSecretScanResponse.error.response.status === 403) { const message = await get403Message(startSecretScanResponse.error); @@ -196,9 +197,10 @@ export const scanSecretApiAction = async ({ scheduleResponse.error.response.status === 400 || scheduleResponse.error.response.status === 409 ) { + const { message } = await getResponseErrors(scheduleResponse.error); return { success: false, - message: scheduleResponse.error.message ?? '', + message, }; } else if (scheduleResponse.error.response.status === 403) { const message = await get403Message(scheduleResponse.error); diff --git a/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/StopScanForm.tsx b/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/StopScanForm.tsx index 4eeb2d6a48..3df5c70054 100644 --- a/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/StopScanForm.tsx +++ b/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/StopScanForm.tsx @@ -8,12 +8,11 @@ import { getSecretApiClient, getVulnerabilityApiClient, } from '@/api/api'; -import { ModelNodeIdentifierNodeTypeEnum } from '@/api/generated'; import { ErrorStandardLineIcon } from '@/components/icons/common/ErrorStandardLine'; import { SuccessModalContent } from '@/features/settings/components/SuccessModalContent'; import { invalidateAllQueries } from '@/queries'; -import { ScanTypeEnum, VulnerabilityScanNodeTypeEnum } from '@/types/common'; -import { get403Message } from '@/utils/403'; +import { ScanTypeEnum } from '@/types/common'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; export enum ActionEnumType { @@ -57,9 +56,10 @@ export const actionStopScan = async ({ }); if (!result.ok) { if (result.error.response.status === 400 || result.error.response.status === 409) { + const { message } = await getResponseErrors(result.error); return { success: false, - message: result.error.message ?? '', + message, }; } else if (result.error.response.status === 403) { const message = await get403Message(result.error); diff --git a/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/VulnerabilityScanConfigureForm.tsx b/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/VulnerabilityScanConfigureForm.tsx index a75b18c1ae..7b97391a85 100644 --- a/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/VulnerabilityScanConfigureForm.tsx +++ b/deepfence_frontend/apps/dashboard/src/components/scan-configure-forms/VulnerabilityScanConfigureForm.tsx @@ -14,7 +14,7 @@ import { import { ScheduleScanForm } from '@/components/scan-configure-forms/ScheduleScanForm'; import { invalidateAllQueries } from '@/queries'; import { VulnerabilityScanNodeTypeEnum } from '@/types/common'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { isNodeTypeARegistryTagType, isNodeTypeARegistryType } from '@/utils/registry'; @@ -237,9 +237,10 @@ export const scanVulnerabilityApiAction = async ({ startVulnerabilityScanResponse.error.response.status === 400 || startVulnerabilityScanResponse.error.response.status === 409 ) { + const { message } = await getResponseErrors(startVulnerabilityScanResponse.error); return { success: false, - message: startVulnerabilityScanResponse.error.message ?? '', + message, }; } else if (startVulnerabilityScanResponse.error.response.status === 403) { const message = await get403Message(startVulnerabilityScanResponse.error); @@ -277,9 +278,10 @@ export const scanVulnerabilityApiAction = async ({ scheduleResponse.error.response.status === 400 || scheduleResponse.error.response.status === 409 ) { + const { message } = await getResponseErrors(scheduleResponse.error); return { success: false, - message: scheduleResponse.error.message ?? '', + message, }; } else if (scheduleResponse.error.response.status === 403) { const message = await get403Message(scheduleResponse.error); diff --git a/deepfence_frontend/apps/dashboard/src/features/auth/data-components/logoutAction.ts b/deepfence_frontend/apps/dashboard/src/features/auth/data-components/logoutAction.ts index 24d1d01051..42d1e74882 100644 --- a/deepfence_frontend/apps/dashboard/src/features/auth/data-components/logoutAction.ts +++ b/deepfence_frontend/apps/dashboard/src/features/auth/data-components/logoutAction.ts @@ -1,6 +1,7 @@ import { toast } from 'sonner'; import { getAuthenticationApiClient } from '@/api/api'; +import { getResponseErrors } from '@/utils/403'; import { apiWrapper, redirectToLogin } from '@/utils/api'; import storage from '@/utils/storage'; @@ -12,12 +13,13 @@ const action = async (): Promise<{ }); const logoutResponse = await logoutApi(); if (!logoutResponse.ok) { + const { message } = await getResponseErrors(logoutResponse.error); if (logoutResponse.error.response.status === 404) { return { - error: logoutResponse.error.message, + error: message, }; } - toast.error(logoutResponse.error.message); + toast.error(message); throw logoutResponse.error; } diff --git a/deepfence_frontend/apps/dashboard/src/features/integrations/pages/DownloadReport.tsx b/deepfence_frontend/apps/dashboard/src/features/integrations/pages/DownloadReport.tsx index 9bd69148f0..d3e231ed67 100644 --- a/deepfence_frontend/apps/dashboard/src/features/integrations/pages/DownloadReport.tsx +++ b/deepfence_frontend/apps/dashboard/src/features/integrations/pages/DownloadReport.tsx @@ -14,7 +14,7 @@ import { IntegrationsIcon } from '@/components/sideNavigation/icons/Integrations import { ReportTable } from '@/features/integrations/components/ReportsTable'; import { SuccessModalContent } from '@/features/settings/components/SuccessModalContent'; import { invalidateAllQueries, queries } from '@/queries'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { download } from '@/utils/download'; import { usePageNavigation } from '@/utils/usePageNavigation'; @@ -108,8 +108,9 @@ const action = async ({ request }: ActionFunctionArgs): Promise => { }); if (!r.ok) { if (r.error.response.status === 400) { + const { message } = await getResponseErrors(r.error); return { - message: r.error.message ?? 'Error in deleting report', + message: message ?? 'Error in deleting report', success: false, }; } else if (r.error.response.status === 403) { diff --git a/deepfence_frontend/apps/dashboard/src/features/integrations/pages/IntegrationAdd.tsx b/deepfence_frontend/apps/dashboard/src/features/integrations/pages/IntegrationAdd.tsx index c2ba37735a..b3fc96d941 100644 --- a/deepfence_frontend/apps/dashboard/src/features/integrations/pages/IntegrationAdd.tsx +++ b/deepfence_frontend/apps/dashboard/src/features/integrations/pages/IntegrationAdd.tsx @@ -23,7 +23,7 @@ import { PlusIcon } from '@/components/icons/common/Plus'; import { integrationTypeToNameMapping } from '@/features/integrations/pages/Integrations'; import { SuccessModalContent } from '@/features/settings/components/SuccessModalContent'; import { invalidateAllQueries, queries } from '@/queries'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { getArrayTypeValuesFromFormData } from '@/utils/formData'; @@ -378,8 +378,10 @@ const action = async ({ request, params }: ActionFunctionArgs): Promise => { }); if (!logsResponse.ok) { if (logsResponse.error.response.status === 400) { - toast.error(logsResponse.error.message); + const { message } = await getResponseErrors(logsResponse.error); + toast.error(message); + return null; } else if (logsResponse.error.response.status === 403) { const message = await get403Message(logsResponse.error); toast.error(message); + return null; } throw logsResponse.error; } diff --git a/deepfence_frontend/apps/dashboard/src/features/settings/pages/EmailConfiguration.tsx b/deepfence_frontend/apps/dashboard/src/features/settings/pages/EmailConfiguration.tsx index 07d610d65f..80cb10e725 100644 --- a/deepfence_frontend/apps/dashboard/src/features/settings/pages/EmailConfiguration.tsx +++ b/deepfence_frontend/apps/dashboard/src/features/settings/pages/EmailConfiguration.tsx @@ -20,7 +20,7 @@ import { ModelEmailConfigurationAdd, ModelEmailConfigurationResp } from '@/api/g import { ErrorStandardLineIcon } from '@/components/icons/common/ErrorStandardLine'; import { SuccessModalContent } from '@/features/settings/components/SuccessModalContent'; import { invalidateAllQueries, queries } from '@/queries'; -import { get403Message, getFieldErrors } from '@/utils/403'; +import { get403Message, getFieldErrors, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; type ActionReturnType = { @@ -78,9 +78,10 @@ export const action = async ({ }); if (!deleteResponse.ok) { if (deleteResponse.error.response.status === 400) { + const { message } = await getResponseErrors(deleteResponse.error); return { success: false, - message: deleteResponse.error.message, + message, }; } else if (deleteResponse.error.response.status === 403) { const message = await get403Message(deleteResponse.error); @@ -117,9 +118,10 @@ export const action = async ({ if (!addResponse.ok) { if (addResponse.error.response.status === 400) { const fieldErrors = await getFieldErrors(addResponse.error); + const { message } = await getResponseErrors(addResponse.error); return { success: false, - message: addResponse.error.message, + message, fieldErrors: { email_id: fieldErrors?.email_id, password: fieldErrors?.password, diff --git a/deepfence_frontend/apps/dashboard/src/features/settings/pages/GlobalSettings.tsx b/deepfence_frontend/apps/dashboard/src/features/settings/pages/GlobalSettings.tsx index 72c39f43d3..329058e502 100644 --- a/deepfence_frontend/apps/dashboard/src/features/settings/pages/GlobalSettings.tsx +++ b/deepfence_frontend/apps/dashboard/src/features/settings/pages/GlobalSettings.tsx @@ -21,7 +21,7 @@ import { ModelSettingsResponse, ModelSettingUpdateRequestKeyEnum } from '@/api/g import { EllipsisIcon } from '@/components/icons/common/Ellipsis'; import { SuccessModalContent } from '@/features/settings/components/SuccessModalContent'; import { invalidateAllQueries, queries } from '@/queries'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; const DEFAULT_PAGE_SIZE = 10; @@ -53,9 +53,10 @@ const action = async ({ request }: ActionFunctionArgs): Promise => { }); if (!deleteResponse.ok) { if (deleteResponse.error.response.status === 400) { + const { message } = await getResponseErrors(deleteResponse.error); return { success: false, - message: deleteResponse.error.message, + message, }; } else if (deleteResponse.error.response.status === 403) { const message = await get403Message(deleteResponse.error); diff --git a/deepfence_frontend/apps/dashboard/src/features/vulnerabilities/pages/VulnerabilityScanResults.tsx b/deepfence_frontend/apps/dashboard/src/features/vulnerabilities/pages/VulnerabilityScanResults.tsx index e9fd6cd10b..c8483e4c0f 100644 --- a/deepfence_frontend/apps/dashboard/src/features/vulnerabilities/pages/VulnerabilityScanResults.tsx +++ b/deepfence_frontend/apps/dashboard/src/features/vulnerabilities/pages/VulnerabilityScanResults.tsx @@ -80,7 +80,7 @@ import { VulnerabilitiesCompare } from '@/features/vulnerabilities/components/Sc import { VulnerabilityScanResultsPieChart } from '@/features/vulnerabilities/components/ScanResults/VulnerabilityScanResultsPieChart'; import { invalidateAllQueries, queries } from '@/queries'; import { ScanTypeEnum, VulnerabilitySeverityType } from '@/types/common'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { formatMilliseconds } from '@/utils/date'; import { abbreviateNumber } from '@/utils/number'; @@ -148,10 +148,11 @@ const action = async ({ if (!result.ok) { if (result.error.response.status === 400 || result.error.response.status === 409) { + const { message } = await getResponseErrors(result.error); return { action: actionType, success: false, - message: result.error.message ?? '', + message, }; } else if (result.error.response.status === 403) { const message = await get403Message(result.error); @@ -196,10 +197,11 @@ const action = async ({ }); if (!result.ok) { if (result.error.response.status === 400 || result.error.response.status === 409) { + const { message } = await getResponseErrors(result.error); return { action: actionType, success: false, - message: result.error.message ?? '', + message, }; } else if (result.error.response.status === 403) { const message = await get403Message(result.error); diff --git a/deepfence_frontend/apps/dashboard/src/features/vulnerabilities/pages/VulnerabilityScans.tsx b/deepfence_frontend/apps/dashboard/src/features/vulnerabilities/pages/VulnerabilityScans.tsx index 942f09004b..93baa97d6d 100644 --- a/deepfence_frontend/apps/dashboard/src/features/vulnerabilities/pages/VulnerabilityScans.tsx +++ b/deepfence_frontend/apps/dashboard/src/features/vulnerabilities/pages/VulnerabilityScans.tsx @@ -60,7 +60,7 @@ import { SuccessModalContent } from '@/features/settings/components/SuccessModal import { SbomModal } from '@/features/vulnerabilities/components/SBOMModal'; import { invalidateAllQueries, queries } from '@/queries'; import { ScanTypeEnum } from '@/types/common'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { formatMilliseconds } from '@/utils/date'; import { download } from '@/utils/download'; @@ -122,9 +122,10 @@ const action = async ({ }); if (!result.ok) { if (result.error.response.status === 400 || result.error.response.status === 409) { + const { message } = await getResponseErrors(result.error); return { success: false, - message: result.error.message ?? '', + message, }; } else if (result.error.response.status === 403) { const message = await get403Message(result.error); @@ -144,12 +145,11 @@ const action = async ({ }); if (!result.ok) { if (result.error.response.status === 400 || result.error.response.status === 409) { - toast.error( - result.error.message || 'Unable to download, please try after sometime', - ); + const { message } = await getResponseErrors(result.error); + toast.error(message || 'Unable to download, please try after sometime'); return { success: false, - message: result.error.message ?? '', + message, }; } else if (result.error.response.status === 403) { const message = await get403Message(result.error); diff --git a/deepfence_frontend/apps/dashboard/src/queries/common.ts b/deepfence_frontend/apps/dashboard/src/queries/common.ts index 2fa35ad028..34f911a54d 100644 --- a/deepfence_frontend/apps/dashboard/src/queries/common.ts +++ b/deepfence_frontend/apps/dashboard/src/queries/common.ts @@ -14,6 +14,7 @@ import { ModelScanListReq, } from '@/api/generated'; import { ScanTypeEnum } from '@/types/common'; +import { getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; export const commonQueries = createQueryKeys('common', { @@ -72,9 +73,10 @@ export const commonQueries = createQueryKeys('common', { if (!result.ok) { console.error(result.error); + const { message } = await getResponseErrors(result.error); return { error: 'Error getting scan history', - message: result.error.message, + message, data: [], }; } diff --git a/deepfence_frontend/apps/dashboard/src/queries/malware.tsx b/deepfence_frontend/apps/dashboard/src/queries/malware.tsx index f37e7063ad..2a16159737 100644 --- a/deepfence_frontend/apps/dashboard/src/queries/malware.tsx +++ b/deepfence_frontend/apps/dashboard/src/queries/malware.tsx @@ -16,6 +16,7 @@ import { } from '@/api/generated'; import { MalwaresCountsCardData } from '@/features/malwares/pages/landing/MalwareCountsCard'; import { ScanStatusEnum } from '@/types/common'; +import { getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { MALWARE_SCAN_STATUS_GROUPS, MalwareScanGroupedStatus } from '@/utils/scan'; @@ -264,7 +265,8 @@ export const malwareQueries = createQueryKeys('malware', { }); if (!statusMalwareScanResponse.ok) { if (statusMalwareScanResponse.error.response.status === 400) { - return { message: statusMalwareScanResponse.error.message }; + const { message } = await getResponseErrors(statusMalwareScanResponse.error); + return { message }; } throw statusMalwareScanResponse.error; } @@ -1117,9 +1119,10 @@ export const malwareQueries = createQueryKeys('malware', { ]); if (!addScanResponse.ok) { + const { message } = await getResponseErrors(addScanResponse.error); return { error: 'Error getting scan diff', - message: addScanResponse.error.message, + message, ...results, }; } @@ -1130,9 +1133,10 @@ export const malwareQueries = createQueryKeys('malware', { const addedScans = addScanResponse.value._new; if (!deletedScanResponse.ok) { + const { message } = await getResponseErrors(deletedScanResponse.error); return { error: 'Error getting scan diff', - message: deletedScanResponse.error.message, + message, ...results, }; } diff --git a/deepfence_frontend/apps/dashboard/src/queries/onboard.ts b/deepfence_frontend/apps/dashboard/src/queries/onboard.ts index 66beacf970..39446a1447 100644 --- a/deepfence_frontend/apps/dashboard/src/queries/onboard.ts +++ b/deepfence_frontend/apps/dashboard/src/queries/onboard.ts @@ -30,6 +30,7 @@ import { SecretSeverityType, VulnerabilitySeverityType, } from '@/types/common'; +import { getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { getRegistryDisplayId } from '@/utils/registry'; @@ -419,8 +420,9 @@ export const onboardQueries = createQueryKeys('onboard', { }, }); if (!statusResponse.ok) { + const { message } = await getResponseErrors(statusResponse.error); return { - message: statusResponse.error.message, + message, data: [], }; } diff --git a/deepfence_frontend/apps/dashboard/src/queries/posture.tsx b/deepfence_frontend/apps/dashboard/src/queries/posture.tsx index 237c2fa750..7009690f17 100644 --- a/deepfence_frontend/apps/dashboard/src/queries/posture.tsx +++ b/deepfence_frontend/apps/dashboard/src/queries/posture.tsx @@ -17,7 +17,7 @@ import { SearchSearchNodeReq, } from '@/api/generated'; import { ScanStatusEnum } from '@/types/common'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { ComplianceScanGroupedStatus } from '@/utils/scan'; import { COMPLIANCE_SCAN_STATUS_GROUPS } from '@/utils/scan'; @@ -201,8 +201,9 @@ export const postureQueries = createQueryKeys('posture', { }); if (!statusResult.ok) { if (statusResult.error.response.status === 400) { + const { message } = await getResponseErrors(statusResult.error); return { - message: statusResult.error.message, + message, }; } throw statusResult.error; @@ -285,8 +286,9 @@ export const postureQueries = createQueryKeys('posture', { result.error.response.status === 400 || result.error.response.status === 404 ) { + const { message } = await getResponseErrors(result.error); return { - message: result.error.message ?? '', + message, }; } throw result.error; @@ -297,8 +299,9 @@ export const postureQueries = createQueryKeys('posture', { resultCounts.error.response.status === 400 || resultCounts.error.response.status === 404 ) { + const { message } = await getResponseErrors(resultCounts.error); return { - message: resultCounts.error.message ?? '', + message, }; } throw resultCounts.error; @@ -387,8 +390,9 @@ export const postureQueries = createQueryKeys('posture', { if (!statusResult.ok) { if (statusResult.error.response.status === 400) { + const { message } = await getResponseErrors(statusResult.error); return { - message: statusResult.error.message, + message, }; } throw statusResult.error; @@ -478,8 +482,9 @@ export const postureQueries = createQueryKeys('posture', { result.error.response.status === 400 || result.error.response.status === 404 ) { + const { message } = await getResponseErrors(result.error); return { - message: result.error.message ?? '', + message, }; } throw result.error; @@ -490,8 +495,9 @@ export const postureQueries = createQueryKeys('posture', { resultCounts.error.response.status === 400 || resultCounts.error.response.status === 404 ) { + const { message } = await getResponseErrors(resultCounts.error); return { - message: resultCounts.error.message ?? '', + message, }; } throw resultCounts.error; @@ -554,8 +560,10 @@ export const postureQueries = createQueryKeys('posture', { }); if (!result.ok) { if (result.error.response.status === 400) { + const { message } = await getResponseErrors(result.error); + return { - message: result.error.message, + message, controls: [], }; } @@ -690,9 +698,10 @@ export const postureQueries = createQueryKeys('posture', { ]); if (!addScanResponse.ok) { + const { message } = await getResponseErrors(addScanResponse.error); return { error: 'Error getting scan diff', - message: addScanResponse.error.message, + message, ...results, }; } @@ -704,9 +713,10 @@ export const postureQueries = createQueryKeys('posture', { const addedScans = addScanResponse.value._new; if (!deletedScanResponse.ok) { + const { message } = await getResponseErrors(deletedScanResponse.error); return { error: 'Error getting scan diff', - message: deletedScanResponse.error.message, + message, ...results, }; } @@ -793,9 +803,10 @@ export const postureQueries = createQueryKeys('posture', { ]); if (!addScanResponse.ok) { + const { message } = await getResponseErrors(addScanResponse.error); return { error: 'Error getting scan diff', - message: addScanResponse.error.message, + message, ...results, }; } @@ -807,9 +818,10 @@ export const postureQueries = createQueryKeys('posture', { const addedScans = addScanResponse.value._new; if (!deletedScanResponse.ok) { + const { message } = await getResponseErrors(deletedScanResponse.error); return { error: 'Error getting scan diff', - message: deletedScanResponse.error.message, + message, ...results, }; } diff --git a/deepfence_frontend/apps/dashboard/src/queries/secret.tsx b/deepfence_frontend/apps/dashboard/src/queries/secret.tsx index 41b8b6f273..bc9d10d1bf 100644 --- a/deepfence_frontend/apps/dashboard/src/queries/secret.tsx +++ b/deepfence_frontend/apps/dashboard/src/queries/secret.tsx @@ -16,6 +16,7 @@ import { } from '@/api/generated'; import { SecretsCountsCardData } from '@/features/secrets/components/landing/SecretsCountsCard'; import { ScanStatusEnum } from '@/types/common'; +import { getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { SECRET_SCAN_STATUS_GROUPS, SecretScanGroupedStatus } from '@/utils/scan'; @@ -262,7 +263,8 @@ export const secretQueries = createQueryKeys('secret', { }); if (!statusSecretScanResponse.ok) { if (statusSecretScanResponse.error.response.status === 400) { - return { message: statusSecretScanResponse.error.message }; + const { message } = await getResponseErrors(statusSecretScanResponse.error); + return { message }; } throw statusSecretScanResponse.error; } @@ -1112,9 +1114,10 @@ export const secretQueries = createQueryKeys('secret', { ]); if (!addScanResponse.ok) { + const { message } = await getResponseErrors(addScanResponse.error); return { error: 'Error getting scan diff', - message: addScanResponse.error.message, + message, ...results, }; } @@ -1126,9 +1129,10 @@ export const secretQueries = createQueryKeys('secret', { const addedScans = addScanResponse.value._new; if (!deletedScanResponse.ok) { + const { message } = await getResponseErrors(deletedScanResponse.error); return { error: 'Error getting scan diff', - message: deletedScanResponse.error.message, + message, ...results, }; } diff --git a/deepfence_frontend/apps/dashboard/src/queries/setting.ts b/deepfence_frontend/apps/dashboard/src/queries/setting.ts index a5f76d2458..48ee3248fd 100644 --- a/deepfence_frontend/apps/dashboard/src/queries/setting.ts +++ b/deepfence_frontend/apps/dashboard/src/queries/setting.ts @@ -2,7 +2,7 @@ import { createQueryKeys } from '@lukemorales/query-key-factory'; import { getDiagnosisApiClient, getSettingsApiClient, getUserApiClient } from '@/api/api'; import { ModelGetAuditLogsRequest } from '@/api/generated'; -import { get403Message } from '@/utils/403'; +import { get403Message, getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; export const settingQueries = createQueryKeys('setting', { @@ -66,8 +66,9 @@ export const settingQueries = createQueryKeys('setting', { if (!userResponse.ok) { if (userResponse.error.response.status === 400) { + const { message } = await getResponseErrors(userResponse.error); return { - message: userResponse.error.message, + message, }; } else if (userResponse.error.response.status === 403) { const message = await get403Message(userResponse.error); @@ -98,8 +99,9 @@ export const settingQueries = createQueryKeys('setting', { const settingsResponse = await settingsApi(); if (!settingsResponse.ok) { if (settingsResponse.error.response.status === 400) { + const { message } = await getResponseErrors(settingsResponse.error); return { - message: settingsResponse.error.message, + message, }; } else if (settingsResponse.error.response.status === 403) { const message = await get403Message(settingsResponse.error); @@ -129,8 +131,9 @@ export const settingQueries = createQueryKeys('setting', { emailResponse.error.response.status === 400 || emailResponse.error.response.status === 409 ) { + const { message } = await getResponseErrors(emailResponse.error); return { - message: emailResponse.error.message, + message, }; } else if (emailResponse.error.response.status === 403) { const message = await get403Message(emailResponse.error); diff --git a/deepfence_frontend/apps/dashboard/src/queries/vulnerability.tsx b/deepfence_frontend/apps/dashboard/src/queries/vulnerability.tsx index a84005e68e..472fd6aeee 100644 --- a/deepfence_frontend/apps/dashboard/src/queries/vulnerability.tsx +++ b/deepfence_frontend/apps/dashboard/src/queries/vulnerability.tsx @@ -18,6 +18,7 @@ import { } from '@/api/generated'; import { VulnerabilitiesCountsCardData } from '@/features/vulnerabilities/components/landing/VulnerabilitiesCountsCard'; import { ScanStatusEnum } from '@/types/common'; +import { getResponseErrors } from '@/utils/403'; import { apiWrapper } from '@/utils/api'; import { VULNERABILITY_SCAN_STATUS_GROUPS, @@ -305,7 +306,10 @@ export const vulnerabilityQueries = createQueryKeys('vulnerability', { }); if (!searchVulnerabilitiesResponse.ok) { if (searchVulnerabilitiesResponse.error.response.status === 400) { - return { message: searchVulnerabilitiesResponse.error.message }; + const { message } = await getResponseErrors( + searchVulnerabilitiesResponse.error, + ); + return { message }; } throw searchVulnerabilitiesResponse.error; } @@ -1254,9 +1258,10 @@ export const vulnerabilityQueries = createQueryKeys('vulnerability', { ]); if (!addScanResponse.ok) { + const { message } = await getResponseErrors(addScanResponse.error); return { error: 'Error getting scan diff', - message: addScanResponse.error.message, + message, ...results, }; } @@ -1267,9 +1272,10 @@ export const vulnerabilityQueries = createQueryKeys('vulnerability', { const addedScans = addScanResponse.value._new; if (!deletedScanResponse.ok) { + const { message } = await getResponseErrors(deletedScanResponse.error); return { error: 'Error getting scan diff', - message: deletedScanResponse.error.message, + message, ...results, }; }