mirror of
https://github.com/prowler-cloud/prowler.git
synced 2025-12-19 05:17:47 +00:00
Compare commits
4 Commits
0d0dabe166
...
5.8.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
084b33c5dd | ||
|
|
06ce25d6a2 | ||
|
|
061cad9bda | ||
|
|
7d4541a1be |
1423
api/poetry.lock
generated
1423
api/poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -23,7 +23,7 @@ dependencies = [
|
||||
"drf-spectacular==0.27.2",
|
||||
"drf-spectacular-jsonapi==0.5.1",
|
||||
"gunicorn==23.0.0",
|
||||
"prowler @ git+https://github.com/prowler-cloud/prowler.git@master",
|
||||
"prowler @ git+https://github.com/prowler-cloud/prowler.git@v5.8",
|
||||
"psycopg2-binary==2.9.9",
|
||||
"pytest-celery[redis] (>=1.0.1,<2.0.0)",
|
||||
"sentry-sdk[django] (>=2.20.0,<3.0.0)",
|
||||
|
||||
4
poetry.lock
generated
4
poetry.lock
generated
@@ -1,4 +1,4 @@
|
||||
# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand.
|
||||
# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "about-time"
|
||||
@@ -2678,6 +2678,8 @@ python-versions = "*"
|
||||
groups = ["dev"]
|
||||
files = [
|
||||
{file = "jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c"},
|
||||
{file = "jsonpath_ng-1.7.0-py2-none-any.whl", hash = "sha256:898c93fc173f0c336784a3fa63d7434297544b7198124a68f9a3ef9597b0ae6e"},
|
||||
{file = "jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Spacer } from "@nextui-org/react";
|
||||
import { Suspense } from "react";
|
||||
|
||||
import { getProvider, getProviders } from "@/actions/providers";
|
||||
import { getProviders } from "@/actions/providers";
|
||||
import { getScans, getScansByState } from "@/actions/scans";
|
||||
import {
|
||||
AutoRefresh,
|
||||
@@ -45,13 +45,9 @@ export default async function Scans({
|
||||
connected: provider.attributes.connection.connected,
|
||||
})) || [];
|
||||
|
||||
const providersCountConnected = await getProviders({
|
||||
filters: { "filter[connected]": true },
|
||||
pageSize: 50,
|
||||
});
|
||||
const thereIsNoProviders = !providersCountConnected?.data;
|
||||
const thereIsNoProviders = !providersData?.data;
|
||||
|
||||
const thereIsNoProvidersConnected = providersCountConnected?.data?.every(
|
||||
const thereIsNoProvidersConnected = providersData?.data?.every(
|
||||
(provider: ProviderProps) => !provider.attributes.connection.connected,
|
||||
);
|
||||
|
||||
@@ -123,34 +119,43 @@ const SSRDataTableScans = async ({
|
||||
// Extract query from filters
|
||||
const query = (filters["filter[search]"] as string) || "";
|
||||
|
||||
// Fetch scans data
|
||||
const scansData = await getScans({ query, page, sort, filters, pageSize });
|
||||
// Fetch scans data with provider information included
|
||||
const scansData = await getScans({
|
||||
query,
|
||||
page,
|
||||
sort,
|
||||
filters,
|
||||
pageSize,
|
||||
include: "provider",
|
||||
});
|
||||
|
||||
// Handle expanded scans data
|
||||
const expandedScansData = await Promise.all(
|
||||
scansData?.data?.map(async (scan: any) => {
|
||||
// Process scans with provider information from included data
|
||||
const expandedScansData =
|
||||
scansData?.data?.map((scan: any) => {
|
||||
const providerId = scan.relationships?.provider?.data?.id;
|
||||
|
||||
if (!providerId) {
|
||||
return { ...scan, providerInfo: null };
|
||||
}
|
||||
|
||||
const formData = new FormData();
|
||||
formData.append("id", providerId);
|
||||
// Find the provider data in the included array
|
||||
const providerData = scansData.included?.find(
|
||||
(item: any) => item.type === "providers" && item.id === providerId,
|
||||
);
|
||||
|
||||
const providerData = await getProvider(formData);
|
||||
|
||||
if (providerData?.data) {
|
||||
const { provider, uid, alias } = providerData.data.attributes;
|
||||
return {
|
||||
...scan,
|
||||
providerInfo: { provider, uid, alias },
|
||||
};
|
||||
if (!providerData) {
|
||||
return { ...scan, providerInfo: null };
|
||||
}
|
||||
|
||||
return { ...scan, providerInfo: null };
|
||||
}) || [],
|
||||
);
|
||||
return {
|
||||
...scan,
|
||||
providerInfo: {
|
||||
provider: providerData.attributes.provider,
|
||||
uid: providerData.attributes.uid,
|
||||
alias: providerData.attributes.alias,
|
||||
},
|
||||
};
|
||||
}) || [];
|
||||
|
||||
return (
|
||||
<DataTable
|
||||
|
||||
@@ -121,44 +121,44 @@ export const useRelatedFilters = ({
|
||||
|
||||
if (shouldDeselectScan) {
|
||||
updateFilter(FilterType.SCAN, null);
|
||||
} else {
|
||||
// Add provider if not already selected
|
||||
if (scanProviderId && !currentProviders.includes(scanProviderId)) {
|
||||
updateFilter(FilterType.PROVIDER_UID, [
|
||||
...currentProviders,
|
||||
scanProviderId,
|
||||
]);
|
||||
}
|
||||
// } else {
|
||||
// // Add provider if not already selected
|
||||
// if (scanProviderId && !currentProviders.includes(scanProviderId)) {
|
||||
// updateFilter(FilterType.PROVIDER_UID, [
|
||||
// ...currentProviders,
|
||||
// scanProviderId,
|
||||
// ]);
|
||||
// }
|
||||
|
||||
// Only add provider type if there are none selected
|
||||
if (
|
||||
scanProviderType &&
|
||||
currentProviderTypes.length === 0 &&
|
||||
!isManualDeselection.current
|
||||
) {
|
||||
updateFilter(FilterType.PROVIDER_TYPE, [scanProviderType]);
|
||||
}
|
||||
// // Only add provider type if there are none selected
|
||||
// if (
|
||||
// scanProviderType &&
|
||||
// currentProviderTypes.length === 0 &&
|
||||
// !isManualDeselection.current
|
||||
// ) {
|
||||
// updateFilter(FilterType.PROVIDER_TYPE, [scanProviderType]);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
// Handle provider selection logic
|
||||
if (
|
||||
currentProviders.length > 0 &&
|
||||
deselectedProviders.length === 0 &&
|
||||
!isManualDeselection.current
|
||||
) {
|
||||
const providerTypes = currentProviders
|
||||
.map(getProviderType)
|
||||
.filter((type): type is ProviderType => type !== null);
|
||||
const selectedProviderTypes = Array.from(new Set(providerTypes));
|
||||
// // Handle provider selection logic
|
||||
// if (
|
||||
// currentProviders.length > 0 &&
|
||||
// deselectedProviders.length === 0 &&
|
||||
// !isManualDeselection.current
|
||||
// ) {
|
||||
// const providerTypes = currentProviders
|
||||
// .map(getProviderType)
|
||||
// .filter((type): type is ProviderType => type !== null);
|
||||
// const selectedProviderTypes = Array.from(new Set(providerTypes));
|
||||
|
||||
if (
|
||||
selectedProviderTypes.length > 0 &&
|
||||
currentProviderTypes.length === 0
|
||||
) {
|
||||
updateFilter(FilterType.PROVIDER_TYPE, selectedProviderTypes);
|
||||
}
|
||||
}
|
||||
// if (
|
||||
// selectedProviderTypes.length > 0 &&
|
||||
// currentProviderTypes.length === 0
|
||||
// ) {
|
||||
// updateFilter(FilterType.PROVIDER_TYPE, selectedProviderTypes);
|
||||
// }
|
||||
// }
|
||||
|
||||
// Update available providers
|
||||
if (currentProviderTypes.length > 0) {
|
||||
|
||||
@@ -192,17 +192,8 @@ export const buildUpdateSecretConfig = (
|
||||
formData: FormData,
|
||||
providerType: ProviderType,
|
||||
) => {
|
||||
// Reuse the same secret building logic as add, but only return the secret
|
||||
// Reuse the same secret building logic as add
|
||||
const { secret } = buildSecretConfig(formData, providerType);
|
||||
|
||||
// Handle special case for M365 password field inconsistency
|
||||
if (providerType === "m365") {
|
||||
return {
|
||||
...secret,
|
||||
password: formData.get(ProviderCredentialFields.PASSWORD),
|
||||
};
|
||||
}
|
||||
|
||||
return secret;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user