@@ -349,6 +349,7 @@ const GDAPInviteWizard = () => {
>
)}
{easyModeProgress && {easyModeProgress}}
+ {getResults.isFetching && }
>
From e2ddd2d7ef96841554e79e6856ebaead4a7f8050 Mon Sep 17 00:00:00 2001
From: KelvinTegelaar
Date: Mon, 24 Jun 2024 13:07:37 +0200
Subject: [PATCH 103/115] error logging
---
src/components/layout/AppHeader.jsx | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/components/layout/AppHeader.jsx b/src/components/layout/AppHeader.jsx
index c62f6008657e..6ff31a76089a 100644
--- a/src/components/layout/AppHeader.jsx
+++ b/src/components/layout/AppHeader.jsx
@@ -102,10 +102,13 @@ const AppHeader = () => {
//if none is found, set the setupCompleted state to true
useEffect(() => {
if (dashboard && dashboard.length >= 1) {
+ console.log('Finding if setup is completed.')
const setupCompleted = dashboard.find((alert) => alert.setupCompleted === false)
if (setupCompleted) {
+ console.log("Setup isn't completed yet, we found a match with false.")
dispatch(setSetupCompleted({ setupCompleted: false }))
} else {
+ console.log('Setup is completed.')
dispatch(setSetupCompleted({ setupCompleted: true }))
}
}
From 09701935d922cfc41c7dc2cd179e03682558b387 Mon Sep 17 00:00:00 2001
From: KelvinTegelaar
Date: Mon, 24 Jun 2024 13:21:07 +0200
Subject: [PATCH 104/115] setup completion stuff
---
src/components/layout/AppHeader.jsx | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/components/layout/AppHeader.jsx b/src/components/layout/AppHeader.jsx
index 6ff31a76089a..3d3636d0e426 100644
--- a/src/components/layout/AppHeader.jsx
+++ b/src/components/layout/AppHeader.jsx
@@ -101,9 +101,9 @@ const AppHeader = () => {
//check if the value of this key is false. If so, set the setupCompleted state to false
//if none is found, set the setupCompleted state to true
useEffect(() => {
- if (dashboard && dashboard.length >= 1) {
+ if (dashboard && Array.isArray(dashboard) && dashboard.length >= 1) {
console.log('Finding if setup is completed.')
- const setupCompleted = dashboard.find((alert) => alert.setupCompleted === false)
+ const setupCompleted = dashboard.find((alert) => alert && alert.setupCompleted === false)
if (setupCompleted) {
console.log("Setup isn't completed yet, we found a match with false.")
dispatch(setSetupCompleted({ setupCompleted: false }))
@@ -111,6 +111,9 @@ const AppHeader = () => {
console.log('Setup is completed.')
dispatch(setSetupCompleted({ setupCompleted: true }))
}
+ } else {
+ console.log('Setup is completed.')
+ dispatch(setSetupCompleted({ setupCompleted: true }))
}
}, [dashboard, dispatch])
From b903be591bf61be7adbe051ac9635a2c005f271e Mon Sep 17 00:00:00 2001
From: Esco
Date: Mon, 24 Jun 2024 13:32:09 +0200
Subject: [PATCH 105/115] Updated to RiskDetection
---
src/_nav.jsx | 4 +-
src/importsMap.jsx | 2 +-
src/routes.json | 6 +--
.../{RiskySignIns.jsx => RiskDetections.jsx} | 51 ++++++++-----------
4 files changed, 28 insertions(+), 35 deletions(-)
rename src/views/identity/reports/{RiskySignIns.jsx => RiskDetections.jsx} (66%)
diff --git a/src/_nav.jsx b/src/_nav.jsx
index da41ba5fb492..d985761aac45 100644
--- a/src/_nav.jsx
+++ b/src/_nav.jsx
@@ -116,8 +116,8 @@ const _nav = [
},
{
component: CNavItem,
- name: 'Risky Sign-ins',
- to: '/identity/reports/risky-signins',
+ name: 'Risk Detections',
+ to: '/identity/reports/risk-detections',
},
],
},
diff --git a/src/importsMap.jsx b/src/importsMap.jsx
index 80aae0226dc8..edf90c47b285 100644
--- a/src/importsMap.jsx
+++ b/src/importsMap.jsx
@@ -32,7 +32,7 @@ import React from 'react'
"/identity/reports/inactive-users-report": React.lazy(() => import('./views/identity/reports/InactiveUsers')),
"/identity/reports/Signin-report": React.lazy(() => import('./views/identity/reports/SignIns')),
"/identity/reports/azure-ad-connect-report": React.lazy(() => import('./views/identity/reports/AzureADConnectReport')),
- "/identity/reports/risky-signins": React.lazy(() => import('./views/identity/reports/RiskySignIns')),
+ "/identity/reports/risk-detections": React.lazy(() => import('./views/identity/reports/RiskDetections')),
"/tenant/administration/tenants": React.lazy(() => import('./views/tenant/administration/Tenants')),
"/tenant/administration/tenants/edit": React.lazy(() => import('./views/tenant/administration/EditTenant')),
"/tenant/administration/partner-relationships": React.lazy(() => import('./views/tenant/administration/PartnerRelationships')),
diff --git a/src/routes.json b/src/routes.json
index d54e9b03f768..7231cbece6eb 100644
--- a/src/routes.json
+++ b/src/routes.json
@@ -207,9 +207,9 @@
"allowedRoles": ["admin", "editor", "readonly"]
},
{
- "path": "/identity/reports/risky-signins",
- "name": "Risky Sign-Ins",
- "component": "views/identity/reports/RiskySignIns",
+ "path": "/identity/reports/risk-detections",
+ "name": "Risk Detections",
+ "component": "views/identity/reports/RiskDetections",
"allowedRoles": ["admin", "editor", "readonly"]
},
{
diff --git a/src/views/identity/reports/RiskySignIns.jsx b/src/views/identity/reports/RiskDetections.jsx
similarity index 66%
rename from src/views/identity/reports/RiskySignIns.jsx
rename to src/views/identity/reports/RiskDetections.jsx
index 3fc63c40cc88..4c91e2a8823e 100644
--- a/src/views/identity/reports/RiskySignIns.jsx
+++ b/src/views/identity/reports/RiskDetections.jsx
@@ -4,10 +4,10 @@ import { CellTip } from 'src/components/tables'
const columns = [
{
- name: 'Date',
- selector: (row) => row['createdDateTime'],
+ name: 'Detected Date',
+ selector: (row) => row['detectedDateTime'],
sortable: true,
- exportSelector: 'createdDateTime',
+ exportSelector: 'detectedDateTime',
},
{
name: 'User Principal Name',
@@ -41,51 +41,44 @@ const columns = [
exportSelector: 'riskDetail',
},
{
- name: 'Risk Level Aggregated',
- selector: (row) => row['riskLevelAggregated'],
+ name: 'Risk Level',
+ selector: (row) => row['riskLevel'],
sortable: true,
- exportSelector: 'riskLevelAggregated',
+ exportSelector: 'riskLevel',
},
{
- name: 'Risk Level During Sign-In',
- selector: (row) => row['riskLevelDuringSignIn'],
+ name: 'Risk Type',
+ selector: (row) => row['riskType'],
sortable: true,
- exportSelector: 'riskLevelDuringSignIn',
+ exportSelector: 'riskType',
},
{
name: 'Risk Event Type',
- selector: (row) => row['riskEventTypes_v2'],
+ selector: (row) => row['riskEventType'],
sortable: true,
- exportSelector: 'riskEventTypes_v2',
+ exportSelector: 'riskEventType',
},
{
- name: 'Application Name',
- selector: (row) => row['clientAppUsed'],
+ name: 'Detection Type',
+ selector: (row) => row['detectionTimingType'],
sortable: true,
- exportSelector: 'clientAppUsed',
+ exportSelector: 'detectionTimingType',
},
{
- name: 'Authentication Requirements',
- selector: (row) => row['authenticationRequirement'],
+ name: 'Activity',
+ selector: (row) => row['activity'],
sortable: true,
- exportSelector: 'authenticationRequirement',
- },
- {
- name: 'Additional Details',
- selector: (row) => row.additionalDetails,
- sortable: true,
- exportSelector: 'additionalDetails',
- cell: (row) => CellTip(row['additionalDetails']),
+ exportSelector: 'activity',
},
]
-const RiskySignInsReport = () => {
+const RiskDetections = () => {
const tenant = useSelector((state) => state.app.currentTenant)
return (
<>
{
},
],
columns: columns,
- path: `/api/ListRiskySignIns`,
- reportName: `${tenant?.defaultDomainName}-RiskySignIns-Report`,
+ path: `/api/ListRiskDetections`,
+ reportName: `${tenant?.defaultDomainName}-RiskDetections-Report`,
params: { TenantFilter: tenant?.defaultDomainName },
}}
/>
@@ -124,4 +117,4 @@ const RiskySignInsReport = () => {
)
}
-export default RiskySignInsReport
+export default RiskDetections
From 70c25761a4d7344bcae1ad594b52baa9b95f3696 Mon Sep 17 00:00:00 2001
From: Esco
Date: Mon, 24 Jun 2024 14:35:13 +0200
Subject: [PATCH 106/115] Added Risky Users
---
src/_nav.jsx | 5 +
src/routes.json | 6 ++
.../identity/administration/RiskyUsers.jsx | 98 +++++++++++++++++++
3 files changed, 109 insertions(+)
create mode 100644 src/views/identity/administration/RiskyUsers.jsx
diff --git a/src/_nav.jsx b/src/_nav.jsx
index d985761aac45..874b6e28eb42 100644
--- a/src/_nav.jsx
+++ b/src/_nav.jsx
@@ -45,6 +45,11 @@ const _nav = [
name: 'Users',
to: '/identity/administration/users',
},
+ {
+ component: CNavItem,
+ name: 'Risky Users',
+ to: '/identity/administration/risky-users',
+ },
{
component: CNavItem,
name: 'Groups',
diff --git a/src/routes.json b/src/routes.json
index 7231cbece6eb..2975b4c168ac 100644
--- a/src/routes.json
+++ b/src/routes.json
@@ -99,6 +99,12 @@
"component": "views/identity/administration/Users",
"allowedRoles": ["admin", "editor", "readonly"]
},
+ {
+ "path": "/identity/administration/risky-users",
+ "name": "Risky Users",
+ "component": "views/identity/administration/RiskyUsers",
+ "allowedRoles": ["admin", "editor", "readonly"]
+ },
{
"path": "/identity/administration/devices",
"name": "Devices",
diff --git a/src/views/identity/administration/RiskyUsers.jsx b/src/views/identity/administration/RiskyUsers.jsx
new file mode 100644
index 000000000000..ac5bdd6eb45d
--- /dev/null
+++ b/src/views/identity/administration/RiskyUsers.jsx
@@ -0,0 +1,98 @@
+import { useSelector } from 'react-redux'
+import { CippPageList } from 'src/components/layout'
+
+const columns = [
+ {
+ name: 'Risk Last Updated Date',
+ selector: (row) => row['riskLastUpdatedDateTime'],
+ sortable: true,
+ exportSelector: 'riskLastUpdatedDateTime',
+ },
+ {
+ name: 'User Principal Name',
+ selector: (row) => row['userPrincipalName'],
+ sortable: true,
+ exportSelector: 'userPrincipalName',
+ },
+ {
+ name: 'Risk Level',
+ selector: (row) => row['riskLevel'],
+ sortable: true,
+ exportSelector: 'riskLevel',
+ },
+ {
+ name: 'Risk State',
+ selector: (row) => row['riskState'],
+ sortable: true,
+ exportSelector: 'riskState',
+ },
+ {
+ name: 'Risk Detail',
+ selector: (row) => row['riskDetail'],
+ sortable: true,
+ exportSelector: 'riskDetail',
+ },
+ {
+ name: 'isProcessing',
+ selector: (row) => row['isProcessing'],
+ sortable: true,
+ exportSelector: 'isProcessing',
+ },
+ {
+ name: 'isDeleted',
+ selector: (row) => row['isDeleted'],
+ sortable: true,
+ exportSelector: 'isDeleted',
+ },
+]
+
+const RiskyUsers = () => {
+ const tenant = useSelector((state) => state.app.currentTenant)
+
+ return (
+ <>
+
+ >
+ )
+}
+
+export default RiskyUsers
From 4d04c29b41e5cd87fda62d9fa62d614cd98f8fe2 Mon Sep 17 00:00:00 2001
From: Esco
Date: Mon, 24 Jun 2024 14:38:27 +0200
Subject: [PATCH 107/115] Update importsMap.jsx
---
src/importsMap.jsx | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/importsMap.jsx b/src/importsMap.jsx
index edf90c47b285..6cd0031a1c6c 100644
--- a/src/importsMap.jsx
+++ b/src/importsMap.jsx
@@ -15,6 +15,7 @@ import React from 'react'
"/identity/administration/jit-admin": React.lazy(() => import('./views/identity/administration/DeployJITAdmin')),
"/identity/administration/ViewBec": React.lazy(() => import('./views/identity/administration/ViewBEC')),
"/identity/administration/users": React.lazy(() => import('./views/identity/administration/Users')),
+ "/identity/administration/risky-users": React.lazy(() => import('./views/identity/administration/RiskyUsers')),
"/identity/administration/devices": React.lazy(() => import('./views/identity/administration/Devices')),
"/identity/administration/groups/add": React.lazy(() => import('./views/identity/administration/AddGroup')),
"/identity/administration/group-templates": React.lazy(() => import('./views/identity/administration/GroupTemplates')),
From 2af51b13db7e4b5745c66064a6214d77b4b219a2 Mon Sep 17 00:00:00 2001
From: Esco
Date: Mon, 24 Jun 2024 16:48:04 +0200
Subject: [PATCH 108/115] Moved to ListGraphRequest
---
src/views/identity/administration/RiskyUsers.jsx | 11 ++++++++---
src/views/identity/reports/RiskDetections.jsx | 15 ++++++++++-----
2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/src/views/identity/administration/RiskyUsers.jsx b/src/views/identity/administration/RiskyUsers.jsx
index ac5bdd6eb45d..d1ffc4ad0499 100644
--- a/src/views/identity/administration/RiskyUsers.jsx
+++ b/src/views/identity/administration/RiskyUsers.jsx
@@ -53,7 +53,7 @@ const RiskyUsers = () => {
<>
{
},
],
columns: columns,
- path: `/api/ListRiskyUsers`,
+ path: `api/ListGraphRequest`,
reportName: `${tenant?.defaultDomainName}-ListRiskyUsers`,
- params: { TenantFilter: tenant?.defaultDomainName },
+ params: {
+ TenantFilter: tenant?.defaultDomainName,
+ Endpoint: `identityProtection/riskyUsers`,
+ $count: true,
+ $orderby: 'riskLastUpdatedDateTime',
+ },
}}
/>
>
diff --git a/src/views/identity/reports/RiskDetections.jsx b/src/views/identity/reports/RiskDetections.jsx
index 4c91e2a8823e..9b526671b1c5 100644
--- a/src/views/identity/reports/RiskDetections.jsx
+++ b/src/views/identity/reports/RiskDetections.jsx
@@ -17,10 +17,10 @@ const columns = [
},
{
name: 'Location',
- selector: (row) => row.locationcipp,
+ selector: (row) => `${row.location.city} - ${row.location.countryOrRegion}`,
sortable: true,
exportSelector: 'locationcipp',
- cell: (row) => CellTip(row['locationcipp']),
+ cell: (row) => CellTip(`${row.location.city} - ${row.location.countryOrRegion}`),
},
{
name: 'IP Address',
@@ -79,7 +79,7 @@ const RiskDetections = () => {
<>
{
},
],
columns: columns,
- path: `/api/ListRiskDetections`,
+ path: `api/ListGraphRequest`,
reportName: `${tenant?.defaultDomainName}-RiskDetections-Report`,
- params: { TenantFilter: tenant?.defaultDomainName },
+ params: {
+ TenantFilter: tenant?.defaultDomainName,
+ Endpoint: `identityProtection/riskDetections`,
+ $count: true,
+ $orderby: 'detectedDateTime',
+ },
}}
/>
>
From ea294a2c07dcdbae5d80f81e437ee0bddccbe8a0 Mon Sep 17 00:00:00 2001
From: Esco
Date: Mon, 24 Jun 2024 18:15:14 +0200
Subject: [PATCH 109/115] fix row.location is null
---
src/views/identity/reports/RiskDetections.jsx | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/views/identity/reports/RiskDetections.jsx b/src/views/identity/reports/RiskDetections.jsx
index 9b526671b1c5..ed1604acda6e 100644
--- a/src/views/identity/reports/RiskDetections.jsx
+++ b/src/views/identity/reports/RiskDetections.jsx
@@ -17,10 +17,10 @@ const columns = [
},
{
name: 'Location',
- selector: (row) => `${row.location.city} - ${row.location.countryOrRegion}`,
+ selector: (row) => `${row.location?.city} - ${row.location?.countryOrRegion}`,
sortable: true,
- exportSelector: 'locationcipp',
- cell: (row) => CellTip(`${row.location.city} - ${row.location.countryOrRegion}`),
+ exportSelector: 'Location',
+ cell: (row) => CellTip(`${row.location?.city} - ${row.location?.countryOrRegion}`),
},
{
name: 'IP Address',
From bb12565bdf57b87c04c598a5ebb289bbe64db5fa Mon Sep 17 00:00:00 2001
From: KelvinTegelaar
Date: Mon, 24 Jun 2024 22:11:59 +0200
Subject: [PATCH 110/115] Version up
---
package.json | 2 +-
public/version_latest.txt | 2 +-
version_latest.txt | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index f92f847989c0..ed6174da5afa 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "cipp",
- "version": "5.8.5",
+ "version": "5.9.0",
"description": "The CyberDrain Improved Partner Portal is a portal to help manage administration for Microsoft Partners.",
"homepage": "https://cipp.app/",
"bugs": {
diff --git a/public/version_latest.txt b/public/version_latest.txt
index a075da200b96..b3d91f9cfc04 100644
--- a/public/version_latest.txt
+++ b/public/version_latest.txt
@@ -1 +1 @@
-5.8.5
+5.9.0
diff --git a/version_latest.txt b/version_latest.txt
index a075da200b96..b3d91f9cfc04 100644
--- a/version_latest.txt
+++ b/version_latest.txt
@@ -1 +1 @@
-5.8.5
+5.9.0
From 35f01dbf3d9af436d3a27ef3b150348b2656570e Mon Sep 17 00:00:00 2001
From: Esco
Date: Tue, 25 Jun 2024 09:51:44 +0200
Subject: [PATCH 111/115] filterlist typo fix
---
src/views/identity/reports/SignIns.jsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/views/identity/reports/SignIns.jsx b/src/views/identity/reports/SignIns.jsx
index 4840a906f9f0..45934e5de02b 100644
--- a/src/views/identity/reports/SignIns.jsx
+++ b/src/views/identity/reports/SignIns.jsx
@@ -201,7 +201,7 @@ const SignInsReport = () => {
title="Sign Ins Report"
capabilities={{ allTenants: false, helpContext: 'https://google.com' }}
datatable={{
- filterlists: [
+ filterlist: [
{
filterName: 'Risky sign-ins',
filter: 'Complex: riskState ne none',
From ca4f768fc83e43ab389a35023ec8eb3769cdf2a2 Mon Sep 17 00:00:00 2001
From: John Duprey
Date: Tue, 25 Jun 2024 10:17:22 -0400
Subject: [PATCH 112/115] fix flatten/format functions
---
src/components/tables/CippTable.jsx | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/components/tables/CippTable.jsx b/src/components/tables/CippTable.jsx
index c0f6ff6d8b19..3de34a64d4be 100644
--- a/src/components/tables/CippTable.jsx
+++ b/src/components/tables/CippTable.jsx
@@ -683,8 +683,7 @@ export default function CippTable({
})
return Array.isArray(exportData) && exportData.length > 0
? exportData.map((obj) => {
- const flattenedObj = flatten(obj)
- return applyFormatter(flattenedObj)
+ return flatten(applyFormatter(obj))
})
: []
}
@@ -695,8 +694,7 @@ export default function CippTable({
// Adjusted dataFlat processing to include formatting
let dataFlat = Array.isArray(data)
? data.map((item) => {
- const flattenedItem = flatten(item)
- return applyFormatter(flattenedItem)
+ return flatten(applyFormatter(item))
})
: []
if (!disablePDFExport) {
From f5ebf89137ca6ec06661e8eaba4c990c6ba2fad6 Mon Sep 17 00:00:00 2001
From: John Duprey
Date: Tue, 25 Jun 2024 16:57:12 -0400
Subject: [PATCH 113/115] fix nested array
---
src/components/tables/CippTable.jsx | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/components/tables/CippTable.jsx b/src/components/tables/CippTable.jsx
index 3de34a64d4be..8db2dbcf1db4 100644
--- a/src/components/tables/CippTable.jsx
+++ b/src/components/tables/CippTable.jsx
@@ -645,9 +645,13 @@ export default function CippTable({
Object.assign(output, flatten(value, newKey))
} else {
if (Array.isArray(value)) {
- value.map((item, idx) => {
- Object.assign(output, flatten(item, `${newKey}[${idx}]`))
- })
+ if (typeof value[0] === 'object') {
+ value.map((item, idx) => {
+ Object.assign(output, flatten(item, `${newKey}[${idx}]`))
+ })
+ } else {
+ output[newKey] = value
+ }
} else {
output[newKey] = value
}
From 453e59d8734a1961476fe9b66bceb400c361f22d Mon Sep 17 00:00:00 2001
From: KelvinTegelaar
Date: Wed, 26 Jun 2024 10:21:16 +0200
Subject: [PATCH 114/115] fix flatten when obj is null
---
src/components/tables/CippTable.jsx | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/components/tables/CippTable.jsx b/src/components/tables/CippTable.jsx
index 8db2dbcf1db4..6eee3a54e611 100644
--- a/src/components/tables/CippTable.jsx
+++ b/src/components/tables/CippTable.jsx
@@ -637,6 +637,7 @@ export default function CippTable({
// Define the flatten function
const flatten = (obj, prefix = '') => {
+ if (obj === null) return {}
return Object.keys(obj).reduce((output, key) => {
const newKey = prefix ? `${prefix}.${key}` : key
const value = obj[key] === null ? '' : obj[key]
From c025a51ab6d26e2887d4cd7af90c9247e820280c Mon Sep 17 00:00:00 2001
From: KelvinTegelaar
Date: Wed, 26 Jun 2024 10:28:31 +0200
Subject: [PATCH 115/115] version up
---
package.json | 2 +-
public/version_latest.txt | 2 +-
version_latest.txt | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index ed6174da5afa..039c0b97dd85 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "cipp",
- "version": "5.9.0",
+ "version": "5.9.3",
"description": "The CyberDrain Improved Partner Portal is a portal to help manage administration for Microsoft Partners.",
"homepage": "https://cipp.app/",
"bugs": {
diff --git a/public/version_latest.txt b/public/version_latest.txt
index b3d91f9cfc04..99a8b57b6f85 100644
--- a/public/version_latest.txt
+++ b/public/version_latest.txt
@@ -1 +1 @@
-5.9.0
+5.9.3
diff --git a/version_latest.txt b/version_latest.txt
index b3d91f9cfc04..99a8b57b6f85 100644
--- a/version_latest.txt
+++ b/version_latest.txt
@@ -1 +1 @@
-5.9.0
+5.9.3