{scan.target_url}
diff --git a/PROJECTS/api-security-scanner/frontend/src/components/scan/TestResultCard.tsx b/PROJECTS/api-security-scanner/frontend/src/components/scan/TestResultCard.tsx
index a6f0256e..4c98ff60 100644
--- a/PROJECTS/api-security-scanner/frontend/src/components/scan/TestResultCard.tsx
+++ b/PROJECTS/api-security-scanner/frontend/src/components/scan/TestResultCard.tsx
@@ -59,10 +59,15 @@ export const TestResultCard = ({
{result.recommendations_json.length > 0 ? (
-
Recommendations
+
+ Recommendations
+
{result.recommendations_json.map((rec) => (
- -
+
-
{rec}
))}
@@ -78,9 +83,7 @@ export const TestResultCard = ({
className="test-result-card__evidence-toggle"
aria-expanded={showEvidence}
>
-
- {showEvidence ? 'βΌ' : 'βΆ'} Technical Evidence
-
+ {showEvidence ? 'βΌ' : 'βΆ'} Technical Evidence
{showEvidence ? (
diff --git a/PROJECTS/api-security-scanner/frontend/src/config/constants.ts b/PROJECTS/api-security-scanner/frontend/src/config/constants.ts
index 4ae5503b..ac3dfd63 100644
--- a/PROJECTS/api-security-scanner/frontend/src/config/constants.ts
+++ b/PROJECTS/api-security-scanner/frontend/src/config/constants.ts
@@ -21,7 +21,8 @@ export const AUTH_ENDPOINTS = {
LOGIN: '/auth/login',
} as const;
-export type AuthEndpoint = (typeof AUTH_ENDPOINTS)[keyof typeof AUTH_ENDPOINTS];
+export type AuthEndpoint =
+ (typeof AUTH_ENDPOINTS)[keyof typeof AUTH_ENDPOINTS];
/**
* Auth Error Messages
diff --git a/PROJECTS/api-security-scanner/frontend/src/hooks/useAuth.ts b/PROJECTS/api-security-scanner/frontend/src/hooks/useAuth.ts
index ca9ce514..187c5a17 100644
--- a/PROJECTS/api-security-scanner/frontend/src/hooks/useAuth.ts
+++ b/PROJECTS/api-security-scanner/frontend/src/hooks/useAuth.ts
@@ -3,10 +3,7 @@
// Β©AngelaMos | 2025
// ===========================
-import {
- useMutation,
- type UseMutationResult,
-} from '@tanstack/react-query';
+import { useMutation, type UseMutationResult } from '@tanstack/react-query';
import { isAxiosError, type AxiosError } from 'axios';
import { toast } from 'sonner';
import { useNavigate } from 'react-router-dom';
@@ -29,12 +26,23 @@ import { useAuthStore } from '@/store/authStore';
const createAuthErrorHandler = (context: string) => {
return (error: unknown): void => {
- if (isAxiosError(error) && error.response?.data !== null && error.response?.data !== undefined) {
+ if (
+ isAxiosError(error) &&
+ error.response?.data !== null &&
+ error.response?.data !== undefined
+ ) {
const errorData: unknown = error.response.data;
- if (typeof errorData === 'object' && errorData !== null && 'detail' in errorData) {
+ if (
+ typeof errorData === 'object' &&
+ errorData !== null &&
+ 'detail' in errorData
+ ) {
const apiError = errorData as { detail: unknown };
- if (typeof apiError.detail === 'string' && apiError.detail.length > 0) {
+ if (
+ typeof apiError.detail === 'string' &&
+ apiError.detail.length > 0
+ ) {
toast.error(apiError.detail);
return;
}
diff --git a/PROJECTS/api-security-scanner/frontend/src/lib/api.ts b/PROJECTS/api-security-scanner/frontend/src/lib/api.ts
index 6ac0f667..607b9787 100644
--- a/PROJECTS/api-security-scanner/frontend/src/lib/api.ts
+++ b/PROJECTS/api-security-scanner/frontend/src/lib/api.ts
@@ -43,7 +43,9 @@ axiosInstance.interceptors.response.use(
(error: AxiosError) => {
if (error.response?.status === 401) {
const requestUrl = error.config?.url ?? '';
- const isAuthEndpoint = requestUrl.includes('/auth/login') || requestUrl.includes('/auth/register');
+ const isAuthEndpoint =
+ requestUrl.includes('/auth/login') ||
+ requestUrl.includes('/auth/register');
if (!isAuthEndpoint) {
localStorage.removeItem(STORAGE_KEYS.AUTH_TOKEN);
diff --git a/PROJECTS/api-security-scanner/frontend/src/lib/errors.ts b/PROJECTS/api-security-scanner/frontend/src/lib/errors.ts
index 6d6ddc00..19d71951 100644
--- a/PROJECTS/api-security-scanner/frontend/src/lib/errors.ts
+++ b/PROJECTS/api-security-scanner/frontend/src/lib/errors.ts
@@ -8,7 +8,11 @@ import { toast } from 'sonner';
export const createApiErrorHandler = (context: string) => {
return (error: unknown): void => {
- if (isAxiosError(error) && error.response?.data !== null && error.response?.data !== undefined) {
+ if (
+ isAxiosError(error) &&
+ error.response?.data !== null &&
+ error.response?.data !== undefined
+ ) {
const errorData: unknown = error.response.data;
if (
@@ -24,7 +28,9 @@ export const createApiErrorHandler = (context: string) => {
}
const fallbackMessage =
- error instanceof Error ? error.message : `Operation failed: ${context}`;
+ error instanceof Error
+ ? error.message
+ : `Operation failed: ${context}`;
toast.error(fallbackMessage);
};
};
diff --git a/PROJECTS/api-security-scanner/frontend/src/pages/DashboardPage.tsx b/PROJECTS/api-security-scanner/frontend/src/pages/DashboardPage.tsx
index 38acf18a..2ebe853a 100644
--- a/PROJECTS/api-security-scanner/frontend/src/pages/DashboardPage.tsx
+++ b/PROJECTS/api-security-scanner/frontend/src/pages/DashboardPage.tsx
@@ -33,7 +33,10 @@ export const DashboardPage = (): React.ReactElement => {
{user?.email}
-
diff --git a/PROJECTS/api-security-scanner/frontend/src/pages/ScanResultsPage.tsx b/PROJECTS/api-security-scanner/frontend/src/pages/ScanResultsPage.tsx
index b1926496..15f1d5cd 100644
--- a/PROJECTS/api-security-scanner/frontend/src/pages/ScanResultsPage.tsx
+++ b/PROJECTS/api-security-scanner/frontend/src/pages/ScanResultsPage.tsx
@@ -27,7 +27,10 @@ export const ScanResultsPage = (): React.ReactElement => {
return (
Failed to load scan results. Please try again.
-
+
Back to Dashboard
@@ -38,7 +41,10 @@ export const ScanResultsPage = (): React.ReactElement => {
return (
Scan not found.
-
+
Back to Dashboard
@@ -55,7 +61,10 @@ export const ScanResultsPage = (): React.ReactElement => {
-
+
β Back to Dashboard
Scan Results
@@ -77,7 +86,9 @@ export const ScanResultsPage = (): React.ReactElement => {
-
Vulnerabilities:
+
+ Vulnerabilities:
+
0
@@ -93,7 +104,10 @@ export const ScanResultsPage = (): React.ReactElement => {
{scan.test_results.map((result) => (
-
+
))}
diff --git a/PROJECTS/api-security-scanner/frontend/src/router.tsx b/PROJECTS/api-security-scanner/frontend/src/router.tsx
index 009c97a2..c0c68a07 100644
--- a/PROJECTS/api-security-scanner/frontend/src/router.tsx
+++ b/PROJECTS/api-security-scanner/frontend/src/router.tsx
@@ -37,6 +37,11 @@ export const router = createBrowserRouter([
},
{
path: '*',
- element:
,
+ element: (
+
+ ),
},
]);
diff --git a/PROJECTS/api-security-scanner/frontend/src/store/uiStore.ts b/PROJECTS/api-security-scanner/frontend/src/store/uiStore.ts
index e96b7d7f..3a617e70 100644
--- a/PROJECTS/api-security-scanner/frontend/src/store/uiStore.ts
+++ b/PROJECTS/api-security-scanner/frontend/src/store/uiStore.ts
@@ -41,9 +41,18 @@ interface UIState {
}
interface UIActions {
- setLoginFormField: (field: keyof Omit
, value: string) => void;
- setRegisterFormField: (field: keyof Omit, value: string) => void;
- setScanFormField: (field: keyof Omit, value: string | ScanTestType[]) => void;
+ setLoginFormField: (
+ field: keyof Omit,
+ value: string,
+ ) => void;
+ setRegisterFormField: (
+ field: keyof Omit,
+ value: string,
+ ) => void;
+ setScanFormField: (
+ field: keyof Omit,
+ value: string | ScanTestType[],
+ ) => void;
toggleTestExpanded: (testId: number) => void;
clearLoginForm: () => void;
clearRegisterForm: () => void;
@@ -113,7 +122,8 @@ export const useUIStore = create()(
toggleTestExpanded: (testId): void => {
set((state) => {
- const currentValue = state.testResults.expandedTests[testId] ?? false;
+ const currentValue =
+ state.testResults.expandedTests[testId] ?? false;
state.testResults.expandedTests[testId] = !currentValue;
});
},
diff --git a/PROJECTS/api-security-scanner/frontend/src/types/guards.ts b/PROJECTS/api-security-scanner/frontend/src/types/guards.ts
index 3ae9ad9f..5f3dcfda 100644
--- a/PROJECTS/api-security-scanner/frontend/src/types/guards.ts
+++ b/PROJECTS/api-security-scanner/frontend/src/types/guards.ts
@@ -14,11 +14,7 @@ import type {
ScanStatus,
Severity,
} from './scan.types';
-import {
- SCAN_TEST_TYPES,
- SCAN_STATUS,
- SEVERITY,
-} from '@/config/constants';
+import { SCAN_TEST_TYPES, SCAN_STATUS, SEVERITY } from '@/config/constants';
export const isValidLoginResponse = (
data: unknown,
@@ -89,7 +85,9 @@ const isValidTestResult = (data: unknown): data is TestResult => {
typeof obj.evidence_json === 'object' &&
obj.evidence_json !== null &&
Array.isArray(obj.recommendations_json) &&
- obj.recommendations_json.every((rec: unknown) => typeof rec === 'string') &&
+ obj.recommendations_json.every(
+ (rec: unknown) => typeof rec === 'string',
+ ) &&
typeof obj.created_at === 'string'
);
};