From 4456db2b4fad9054ef17095367b87a8482435b37 Mon Sep 17 00:00:00 2001 From: John Duprey Date: Fri, 9 Jun 2023 17:24:27 -0400 Subject: [PATCH 01/20] User License Fix Fix TimeAgo errors --- src/App.js | 3 +++ src/components/tables/CellDate.js | 3 --- src/components/tables/CippTable.js | 8 +++++++- src/components/utilities/CippActionsOffcanvas.js | 4 ---- src/views/home/Home.js | 4 ---- src/views/identity/administration/Users.js | 3 ++- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/App.js b/src/App.js index 1a632b4d87dd..3ed5f1f12ae4 100644 --- a/src/App.js +++ b/src/App.js @@ -6,6 +6,9 @@ import routes from 'src/routes' import { Helmet } from 'react-helmet' import adminRoutes from './adminRoutes' import Skeleton from 'react-loading-skeleton' +import TimeAgo from 'javascript-time-ago' +import en from 'javascript-time-ago/locale/en.json' +TimeAgo.addDefaultLocale(en) // Containers const DefaultLayout = React.lazy(() => import('./layout/DefaultLayout')) diff --git a/src/components/tables/CellDate.js b/src/components/tables/CellDate.js index c3934ffcb83d..9806f137c290 100644 --- a/src/components/tables/CellDate.js +++ b/src/components/tables/CellDate.js @@ -2,9 +2,6 @@ import React from 'react' import moment from 'moment' import PropTypes from 'prop-types' import { CTooltip } from '@coreui/react' -import TimeAgo from 'javascript-time-ago' -import en from 'javascript-time-ago/locale/en.json' -TimeAgo.addDefaultLocale(en) import ReactTimeAgo from 'react-time-ago' /** diff --git a/src/components/tables/CippTable.js b/src/components/tables/CippTable.js index 372bad9eea18..71d6b5432ce9 100644 --- a/src/components/tables/CippTable.js +++ b/src/components/tables/CippTable.js @@ -329,8 +329,10 @@ export default function CippTable({ if (!disablePDFExport || !disableCSVExport) { const keys = [] + const exportFormatted = {} columns.map((col) => { if (col.exportSelector) keys.push(col.exportSelector) + if (col.exportFormatted) exportFormatted[col.exportSelector] = col.exportFormatted return null }) @@ -348,7 +350,11 @@ export default function CippTable({ acc[curr] = 'n/a' } } else { - acc[curr] = obj[curr] + if (typeof exportFormatted[curr] === 'function') { + acc[curr] = exportFormatted[curr]({ cell: obj[curr] }) + } else { + acc[curr] = obj[curr] + } } return acc }, {}), diff --git a/src/components/utilities/CippActionsOffcanvas.js b/src/components/utilities/CippActionsOffcanvas.js index b24aa1a28c12..bdf28fae5cff 100644 --- a/src/components/utilities/CippActionsOffcanvas.js +++ b/src/components/utilities/CippActionsOffcanvas.js @@ -19,10 +19,6 @@ import { CippOffcanvasTable } from 'src/components/tables' import { useLazyGenericGetRequestQuery, useLazyGenericPostRequestQuery } from 'src/store/api/app' import { Link, useNavigate } from 'react-router-dom' import { stringCamelCase } from 'src/components/utilities/CippCamelCase' -import TimeAgo from 'javascript-time-ago' - -import en from 'javascript-time-ago/locale/en.json' -TimeAgo.addDefaultLocale(en) import ReactTimeAgo from 'react-time-ago' export default function CippActionsOffcanvas(props) { diff --git a/src/views/home/Home.js b/src/views/home/Home.js index 1ddbf776a400..630577a4a73a 100644 --- a/src/views/home/Home.js +++ b/src/views/home/Home.js @@ -23,11 +23,7 @@ import Skeleton from 'react-loading-skeleton' import { UniversalSearch } from 'src/components/utilities/UniversalSearch' import { ActionContentCard } from 'src/components/contentcards' import { useSelector } from 'react-redux' -import TimeAgo from 'javascript-time-ago' import allStandardsList from 'src/data/standards' - -import en from 'javascript-time-ago/locale/en.json' -TimeAgo.addDefaultLocale(en) import ReactTimeAgo from 'react-time-ago' const Home = () => { diff --git a/src/views/identity/administration/Users.js b/src/views/identity/administration/Users.js index eb1bf03c1813..5b03cc3323d2 100644 --- a/src/views/identity/administration/Users.js +++ b/src/views/identity/administration/Users.js @@ -8,7 +8,7 @@ import { cellBooleanFormatter, CellTip } from 'src/components/tables' import { CippPageList } from 'src/components/layout' import { TitleButton } from 'src/components/buttons' import { CippActionsOffcanvas } from 'src/components/utilities' -import { cellLicenseFormatter } from 'src/components/tables/CellLicense' +import { cellLicenseFormatter, CellLicense } from 'src/components/tables/CellLicense' import M365Licenses from 'src/data/M365Licenses' const Offcanvas = (row, rowIndex, formatExtraData) => { @@ -276,6 +276,7 @@ const Users = (row) => { name: 'Licenses', selector: (row) => row['assignedLicenses'], exportSelector: 'assignedLicenses', + exportFormatted: CellLicense, cell: cellLicenseFormatter(), sortable: true, grow: 5, From 08ed85747847ed1edff77a491fa2d3a21a56a682 Mon Sep 17 00:00:00 2001 From: John Duprey Date: Fri, 9 Jun 2023 21:22:11 -0400 Subject: [PATCH 02/20] nested property export --- src/components/tables/CippTable.js | 23 ++++++++++++---------- src/views/identity/administration/Users.js | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/components/tables/CippTable.js b/src/components/tables/CippTable.js index 71d6b5432ce9..c3cc3f0665f2 100644 --- a/src/components/tables/CippTable.js +++ b/src/components/tables/CippTable.js @@ -329,10 +329,10 @@ export default function CippTable({ if (!disablePDFExport || !disableCSVExport) { const keys = [] - const exportFormatted = {} + const exportFormatter = {} columns.map((col) => { if (col.exportSelector) keys.push(col.exportSelector) - if (col.exportFormatted) exportFormatted[col.exportSelector] = col.exportFormatted + if (col.exportFormatter) exportFormatter[col.exportSelector] = col.exportFormatter return null }) @@ -342,16 +342,19 @@ export default function CippTable({ keys.reduce((acc, curr) => { const key = curr.split('/') if (key.length > 1) { - const parent = key[0] - const subkey = key[1] - if (obj[parent] !== null && obj[parent][subkey] !== null) { - acc[curr] = obj[parent][subkey] - } else { - acc[curr] = 'n/a' + var property = obj + for (var x = 0; x < key.length; x++) { + if (property[key[x]] !== null) { + property = property[key[x]] + } else { + property = 'n/a' + break + } } + acc[curr] = property } else { - if (typeof exportFormatted[curr] === 'function') { - acc[curr] = exportFormatted[curr]({ cell: obj[curr] }) + if (typeof exportFormatter[curr] === 'function') { + acc[curr] = exportFormatter[curr]({ cell: obj[curr] }) } else { acc[curr] = obj[curr] } diff --git a/src/views/identity/administration/Users.js b/src/views/identity/administration/Users.js index 5b03cc3323d2..7cf8eda1368b 100644 --- a/src/views/identity/administration/Users.js +++ b/src/views/identity/administration/Users.js @@ -276,7 +276,7 @@ const Users = (row) => { name: 'Licenses', selector: (row) => row['assignedLicenses'], exportSelector: 'assignedLicenses', - exportFormatted: CellLicense, + exportFormatter: CellLicense, cell: cellLicenseFormatter(), sortable: true, grow: 5, From d51139eb7fab75b7c08ad9378f640d2801a41d6d Mon Sep 17 00:00:00 2001 From: Roel van der Wegen Date: Wed, 14 Jun 2023 22:31:55 +0200 Subject: [PATCH 03/20] Replaced Endpoint portal link with Intune --- src/views/tenant/administration/Tenants.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/tenant/administration/Tenants.js b/src/views/tenant/administration/Tenants.js index fe047247bde5..f3431c1a8eb7 100644 --- a/src/views/tenant/administration/Tenants.js +++ b/src/views/tenant/administration/Tenants.js @@ -275,7 +275,7 @@ const TenantsList = () => { center: true, cell: (row) => ( Date: Fri, 16 Jun 2023 09:40:13 +0200 Subject: [PATCH 04/20] Footer spacing fix --- src/components/layout/AppFooter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/layout/AppFooter.js b/src/components/layout/AppFooter.js index 13e1c174efb5..63975a2c9314 100644 --- a/src/components/layout/AppFooter.js +++ b/src/components/layout/AppFooter.js @@ -16,7 +16,7 @@ const AppFooter = () => { {' '} - + {' '} From 4520c75ca63928a02b64952faae9364f73ca246f Mon Sep 17 00:00:00 2001 From: Roel van der Wegen Date: Sun, 18 Jun 2023 05:21:07 +0200 Subject: [PATCH 05/20] Added List Devices link to dashboard --- src/views/home/Home.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/views/home/Home.js b/src/views/home/Home.js index 630577a4a73a..78fd7bbbd459 100644 --- a/src/views/home/Home.js +++ b/src/views/home/Home.js @@ -131,6 +131,11 @@ const Home = () => { link: `/identity/administration/groups?customerId=${currentTenant.customerId}`, icon: faUsers, }, + { + label: 'List Devices', + link: `/endpoint/reports/devices?customerId=${currentTenant.customerId}`, + icon: faLaptopCode, + }, { label: 'Create User', link: `/identity/administration/users/add?customerId=${currentTenant.customerId}`, From fe6698884ea9d3c4ea277771232fddffa5c5fb0f Mon Sep 17 00:00:00 2001 From: Roel van der Wegen Date: Fri, 23 Jun 2023 09:25:33 +0200 Subject: [PATCH 06/20] Add Sharepoint Quota to dashboard --- src/views/home/Home.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/views/home/Home.js b/src/views/home/Home.js index 78fd7bbbd459..957c36d4e933 100644 --- a/src/views/home/Home.js +++ b/src/views/home/Home.js @@ -48,6 +48,16 @@ const Home = () => { params: { tenantFilter: currentTenant.defaultDomainName }, }) + const { + data: sharepoint, + isLoading: isLoadingSPQuota, + isSuccess: issuccessSPQuota, + isFetching: isFetchingSPQuota, + } = useGenericGetRequestQuery({ + path: '/api/ListSharepointQuota', + params: { tenantFilter: currentTenant.defaultDomainName }, + }) + const { data: standards, isLoading: isLoadingStandards, @@ -272,6 +282,11 @@ const Home = () => { ))} + +

Sharepoint Quota

+ {(isLoadingSPQuota || isFetchingSPQuota) && } + {sharepoint && !isFetchingSPQuota && sharepoint?.Dashboard} +

Applied Standards

{(isLoadingStandards || isFetchingStandards) && } From 8d9c7b2555fa88ba7c13b536c4230db03cd70d51 Mon Sep 17 00:00:00 2001 From: Brandon Martinez Date: Mon, 26 Jun 2023 08:23:27 -0700 Subject: [PATCH 07/20] Updated Intune wipe actions --- src/views/endpoint/intune/Devices.js | 31 +++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/views/endpoint/intune/Devices.js b/src/views/endpoint/intune/Devices.js index 06d28a18c558..b49962591e96 100644 --- a/src/views/endpoint/intune/Devices.js +++ b/src/views/endpoint/intune/Devices.js @@ -132,18 +132,39 @@ const Offcanvas = (row, rowIndex, formatExtraData) => { color: 'danger', modal: true, modalType: 'POST', - modalBody: { keepUserData: 'false', keepEnrollmentData: 'true' }, + modalBody: { keepUserData: false, keepEnrollmentData: true }, + modalUrl: `/api/ExecDeviceAction?TenantFilter=${tenant.defaultDomainName}&GUID=${row.id}&Action=cleanWindowsDevice`, + modalCheckbox: 'Remove enrollment data', + modalMessage: 'Are you sure you want to wipe this device?', + }, + { + label: 'Wipe Device, remove enrollment data', + color: 'danger', + modal: true, + modalType: 'POST', + modalBody: { keepUserData: false, keepEnrollmentData: false }, modalUrl: `/api/ExecDeviceAction?TenantFilter=${tenant.defaultDomainName}&GUID=${row.id}&Action=cleanWindowsDevice`, - modalMessage: 'Are you sure you want to wipe this device', + modalMessage: 'Are you sure you want to wipe device, AND remove enrollment data?', }, { - label: 'Wipe Device and continue at powerloss', + label: 'Wipe Device, keep enrollment data, and continue at powerloss', + color: 'danger', + modal: true, + modalType: 'POST', + modalBody: { keepEnrollmentData: true, keepUserData: false, useProtectedWipe: true }, + modalUrl: `/api/ExecDeviceAction?TenantFilter=${tenant.defaultDomainName}&GUID=${row.id}&Action=cleanWindowsDevice`, + modalMessage: + 'Are you sure you want to wipe this device? This will keep enrollment data. Continuing at powerloss may cause boot issues if wipe is interrupted.', + }, + { + label: 'Wipe Device, remove enrollment data, and continue at powerloss', color: 'danger', modal: true, modalType: 'POST', modalBody: { keepEnrollmentData: false, keepUserData: false, useProtectedWipe: true }, modalUrl: `/api/ExecDeviceAction?TenantFilter=${tenant.defaultDomainName}&GUID=${row.id}&Action=cleanWindowsDevice`, - modalMessage: 'Are you sure you want to wipe this device', + modalMessage: + 'Are you sure you want to wipe this device? This will also remove enrollment data. Continuing at powerloss may cause boot issues if wipe is interrupted.', }, { label: 'Autopilot Reset', @@ -152,7 +173,7 @@ const Offcanvas = (row, rowIndex, formatExtraData) => { modalType: 'POST', modalBody: { keepUserData: 'false', keepEnrollmentData: 'true' }, modalUrl: `/api/ExecDeviceAction?TenantFilter=${tenant.defaultDomainName}&GUID=${row.id}&Action=wipe`, - modalMessage: 'Are you sure you want to wipe this device', + modalMessage: 'Are you sure you want to Autopilot Reset this device?', }, { label: 'Retire device', From fe7fe8c2a017042b80e30fcdbe4af421b87a249b Mon Sep 17 00:00:00 2001 From: John Duprey Date: Wed, 28 Jun 2023 16:45:20 -0400 Subject: [PATCH 08/20] GDAP Relationship tweak Add roles to extended info --- src/data/GDAPRoles.json | 706 ++++++++++++++++++ .../administration/ListGDAPRelationships.js | 18 +- 2 files changed, 722 insertions(+), 2 deletions(-) create mode 100644 src/data/GDAPRoles.json diff --git a/src/data/GDAPRoles.json b/src/data/GDAPRoles.json new file mode 100644 index 000000000000..adc846cf3028 --- /dev/null +++ b/src/data/GDAPRoles.json @@ -0,0 +1,706 @@ +[ + { + "ExtensionData": {}, + "Description": "Can create and manage all aspects of app registrations and enterprise apps.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Application Administrator", + "ObjectId": "9b895d92-2cd3-44c7-9d02-a6ac2d5ea5c3" + }, + { + "ExtensionData": {}, + "Description": "Can create application registrations independent of the \u0027Users can register applications\u0027 setting.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Application Developer", + "ObjectId": "cf1c38e5-3621-4004-a7cb-879624dced7c" + }, + { + "ExtensionData": {}, + "Description": "Can create attack payloads that an administrator can initiate later.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Attack Payload Author", + "ObjectId": "9c6df0f2-1e7c-4dc3-b195-66dfbd24aa8f" + }, + { + "ExtensionData": {}, + "Description": "Can create and manage all aspects of attack simulation campaigns.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Attack Simulation Administrator", + "ObjectId": "c430b396-e693-46cc-96f3-db01bf8bb62a" + }, + { + "ExtensionData": {}, + "Description": "Assign custom security attribute keys and values to supported Azure AD objects.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Attribute Assignment Administrator", + "ObjectId": "58a13ea3-c632-46ae-9ee0-9c0d43cd7f3d" + }, + { + "ExtensionData": {}, + "Description": "Read custom security attribute keys and values for supported Azure AD objects.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Attribute Assignment Reader", + "ObjectId": "ffd52fa5-98dc-465c-991d-fc073eb59f8f" + }, + { + "ExtensionData": {}, + "Description": "Define and manage the definition of custom security attributes.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Attribute Definition Administrator", + "ObjectId": "8424c6f0-a189-499e-bbd0-26c1753c96d4" + }, + { + "ExtensionData": {}, + "Description": "Read the definition of custom security attributes.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Attribute Definition Reader", + "ObjectId": "1d336d2c-4ae8-42ef-9711-b3604ce3fc2c" + }, + { + "ExtensionData": {}, + "Description": "Allowed to view, set and reset authentication method information for any non-admin user.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Authentication Administrator", + "ObjectId": "c4e39bd9-1100-46d3-8c65-fb160da0071f" + }, + { + "ExtensionData": {}, + "Description": "Can create and manage the authentication methods policy, tenant-wide MFA settings, password protection policy, and verifiable credentials.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Authentication Policy Administrator", + "ObjectId": "0526716b-113d-4c15-b2c8-68e3c22b9f80" + }, + { + "ExtensionData": {}, + "Description": "Users assigned to this role are added to the local administrators group on Azure AD-joined devices.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Azure AD Joined Device Local Administrator", + "ObjectId": "9f06204d-73c1-4d4c-880a-6edb90606fd8" + }, + { + "ExtensionData": {}, + "Description": "Can manage Azure DevOps organization policy and settings.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Azure DevOps Administrator", + "ObjectId": "e3973bdf-4987-49ae-837a-ba8e231c7286" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of the Azure Information Protection product.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Azure Information Protection Administrator", + "ObjectId": "7495fdc4-34c4-4d15-a289-98788ce399fd" + }, + { + "ExtensionData": {}, + "Description": "Can manage secrets for federation and encryption in the Identity Experience Framework (IEF).", + "IsEnabled": true, + "IsSystem": true, + "Name": "B2C IEF Keyset Administrator", + "ObjectId": "aaf43236-0c0d-4d5f-883a-6955382ac081" + }, + { + "ExtensionData": {}, + "Description": "Can create and manage trust framework policies in the Identity Experience Framework (IEF).", + "IsEnabled": true, + "IsSystem": true, + "Name": "B2C IEF Policy Administrator", + "ObjectId": "3edaf663-341e-4475-9f94-5c398ef6c070" + }, + { + "ExtensionData": {}, + "Description": "Can perform common billing related tasks like updating payment information.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Billing Administrator", + "ObjectId": "b0f54661-2d74-4c50-afa3-1ec803f12efe" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of the Cloud App Security product.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Cloud App Security Administrator", + "ObjectId": "892c5842-a9a6-463a-8041-72aa08ca3cf6" + }, + { + "ExtensionData": {}, + "Description": "Can create and manage all aspects of app registrations and enterprise apps except App Proxy.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Cloud Application Administrator", + "ObjectId": "158c047a-c907-4556-b7ef-446551a6b5f7" + }, + { + "ExtensionData": {}, + "Description": "Full access to manage devices in Azure AD.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Cloud Device Administrator", + "ObjectId": "7698a772-787b-4ac8-901f-60d6b08affd2" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of Azure AD and Microsoft services that use Azure AD identities. This role was formerly known as Global Administrator.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Company Administrator", + "ObjectId": "62e90394-69f5-4237-9190-012177145e10" + }, + { + "ExtensionData": {}, + "Description": "Can read and manage compliance configuration and reports in Azure AD and Microsoft 365.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Compliance Administrator", + "ObjectId": "17315797-102d-40b4-93e0-432062caca18" + }, + { + "ExtensionData": {}, + "Description": "Creates and manages compliance content.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Compliance Data Administrator", + "ObjectId": "e6d1a23a-da11-4be4-9570-befc86d067a7" + }, + { + "ExtensionData": {}, + "Description": "Can manage Conditional Access capabilities.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Conditional Access Administrator", + "ObjectId": "b1be1c3e-b65d-4f19-8427-f6fa0d97feb9" + }, + { + "ExtensionData": {}, + "Description": "Can approve Microsoft support requests to access customer organizational data.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Customer LockBox Access Approver", + "ObjectId": "5c4f9dcd-47dc-4cf7-8c9a-9e4207cbfc91" + }, + { + "ExtensionData": {}, + "Description": "Can access and manage Desktop management tools and services.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Desktop Analytics Administrator", + "ObjectId": "38a96431-2bdf-4b4c-8b6e-5d3d8abac1a4" + }, + { + "ExtensionData": {}, + "Description": "Device Join", + "IsEnabled": true, + "IsSystem": true, + "Name": "Device Join", + "ObjectId": "9c094953-4995-41c8-84c8-3ebb9b32c93f" + }, + { + "ExtensionData": {}, + "Description": "Device Users", + "IsEnabled": true, + "IsSystem": true, + "Name": "Device Users", + "ObjectId": "d405c6df-0af8-4e3b-95e4-4d06e542189e" + }, + { + "ExtensionData": {}, + "Description": "Can read basic directory information. Commonly used to grant directory read access to applications and guests.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Directory Readers", + "ObjectId": "88d8e3e3-8f55-4a1e-953a-9b9898b8876b" + }, + { + "ExtensionData": {}, + "Description": "Only used by Azure AD Connect service.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Directory Synchronization Accounts", + "ObjectId": "d29b2b05-8046-44ba-8758-1e26182fcf32" + }, + { + "ExtensionData": {}, + "Description": "Can read and write basic directory information. For granting access to applications, not intended for users.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Directory Writers", + "ObjectId": "9360feb5-f418-4baa-8175-e2a00bac4301" + }, + { + "ExtensionData": {}, + "Description": "Can manage domain names in cloud and on-premises.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Domain Name Administrator", + "ObjectId": "8329153b-31d0-4727-b945-745eb3bc5f31" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of the Dynamics 365 product.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Dynamics 365 Administrator", + "ObjectId": "44367163-eba1-44c3-98af-f5787879f96a" + }, + { + "ExtensionData": {}, + "Description": "Manage all aspects of Microsoft Edge.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Edge Administrator", + "ObjectId": "3f1acade-1e04-4fbc-9b69-f0302cd84aef" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of the Exchange product.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Exchange Administrator", + "ObjectId": "29232cdf-9323-42fd-ade2-1d097af3e4de" + }, + { + "ExtensionData": {}, + "Description": "Can create or update Exchange Online recipients within the Exchange Online organization.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Exchange Recipient Administrator", + "ObjectId": "31392ffb-586c-42d1-9346-e59415a2cc4e" + }, + { + "ExtensionData": {}, + "Description": "Can create and manage all aspects of user flows.", + "IsEnabled": true, + "IsSystem": true, + "Name": "External ID User Flow Administrator", + "ObjectId": "6e591065-9bad-43ed-90f3-e9424366d2f0" + }, + { + "ExtensionData": {}, + "Description": "Can create and manage the attribute schema available to all user flows.", + "IsEnabled": true, + "IsSystem": true, + "Name": "External ID User Flow Attribute Administrator", + "ObjectId": "0f971eea-41eb-4569-a71e-57bb8a3eff1e" + }, + { + "ExtensionData": {}, + "Description": "Can configure identity providers for use in direct federation.", + "IsEnabled": true, + "IsSystem": true, + "Name": "External Identity Provider Administrator", + "ObjectId": "be2f45a1-457d-42af-a067-6ec1fa63bc45" + }, + { + "ExtensionData": {}, + "Description": "Can read everything that a Global Administrator can, but not update anything.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Global Reader", + "ObjectId": "f2ef992c-3afb-46b9-b7cf-a126ee74c451" + }, + { + "ExtensionData": {}, + "Description": "Members of this role can create/manage groups, create/manage groups settings like naming and expiration policies, and view groups activity and audit reports.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Groups Administrator", + "ObjectId": "fdd7a751-b60b-444a-984c-02652fe8fa1c" + }, + { + "ExtensionData": {}, + "Description": "Can invite guest users independent of the \u0027members can invite guests\u0027 setting.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Guest Inviter", + "ObjectId": "95e79109-95c0-4d8e-aee3-d01accf2d47b" + }, + { + "ExtensionData": {}, + "Description": "Can reset passwords for non-administrators and Helpdesk Administrators.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Helpdesk Administrator", + "ObjectId": "729827e3-9c14-49f7-bb1b-9608f156bbb8" + }, + { + "ExtensionData": {}, + "Description": "Can manage AD to Azure AD cloud provisioning, Azure AD Connect, and federation settings.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Hybrid Identity Administrator", + "ObjectId": "8ac3fc64-6eca-42ea-9e69-59f4c7b60eb2" + }, + { + "ExtensionData": {}, + "Description": "Manage access using Azure AD for identity governance scenarios.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Identity Governance Administrator", + "ObjectId": "45d8d3c5-c802-45c6-b32a-1d70b5e1e86e" + }, + { + "ExtensionData": {}, + "Description": "Has administrative access in the Microsoft 365 Insights app.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Insights Administrator", + "ObjectId": "eb1f4a8d-243a-41f0-9fbd-c7cdf6c5ef7c" + }, + { + "ExtensionData": {}, + "Description": "Access the analytical capabilities in Microsoft Viva Insights and run custom queries.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Insights Analyst", + "ObjectId": "25df335f-86eb-4119-b717-0ff02de207e9" + }, + { + "ExtensionData": {}, + "Description": "Can view and share dashboards and insights via the M365 Insights app.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Insights Business Leader", + "ObjectId": "31e939ad-9672-4796-9c2e-873181342d2d" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of the Intune product.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Intune Administrator", + "ObjectId": "3a2c62db-5318-420d-8d74-23affee5d9d5" + }, + { + "ExtensionData": {}, + "Description": "Can manage settings for Microsoft Kaizala.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Kaizala Administrator", + "ObjectId": "74ef975b-6605-40af-a5d2-b9539d836353" + }, + { + "ExtensionData": {}, + "Description": "Can configure knowledge, learning, and other intelligent features.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Knowledge Administrator", + "ObjectId": "b5a8dcf3-09d5-43a9-a639-8e29ef291470" + }, + { + "ExtensionData": {}, + "Description": "Has access to topic management dashboard and can manage content.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Knowledge Manager", + "ObjectId": "744ec460-397e-42ad-a462-8b3f9747a02c" + }, + { + "ExtensionData": {}, + "Description": "Can manage product licenses on users and groups.", + "IsEnabled": true, + "IsSystem": true, + "Name": "License Administrator", + "ObjectId": "4d6ac14f-3453-41d0-bef9-a3e0c569773a" + }, + { + "ExtensionData": {}, + "Description": "Create and manage all aspects of workflows and tasks associated with Lifecycle Workflows in Azure AD.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Lifecycle Workflows Administrator", + "ObjectId": "59d46f88-662b-457b-bceb-5c3809e5908f" + }, + { + "ExtensionData": {}, + "Description": "Can read security messages and updates in Office 365 Message Center only.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Message Center Privacy Reader", + "ObjectId": "ac16e43d-7b2d-40e0-ac05-243ff356ab5b" + }, + { + "ExtensionData": {}, + "Description": "Can read messages and updates for their organization in Office 365 Message Center only.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Message Center Reader", + "ObjectId": "790c1fb9-7f7d-4f88-86a1-ef1f95c05c1b" + }, + { + "ExtensionData": {}, + "Description": "Can manage network locations and review enterprise network design insights for Microsoft 365 Software as a Service applications.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Network Administrator", + "ObjectId": "d37c8bed-0711-4417-ba38-b4abe66ce4c2" + }, + { + "ExtensionData": {}, + "Description": "Can manage Office apps cloud services, including policy and settings management, and manage the ability to select, unselect and publish \u0027what\u0027s new\u0027 feature content to end-user\u0027s devices.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Office Apps Administrator", + "ObjectId": "2b745bdf-0803-4d80-aa65-822c4493daac" + }, + { + "ExtensionData": {}, + "Description": "Do not use - not intended for general use.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Partner Tier1 Support", + "ObjectId": "4ba39ca4-527c-499a-b93d-d9b492c50246" + }, + { + "ExtensionData": {}, + "Description": "Do not use - not intended for general use.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Partner Tier2 Support", + "ObjectId": "e00e864a-17c5-4a4b-9c06-f5b95a8d5bd8" + }, + { + "ExtensionData": {}, + "Description": "Can reset passwords for non-administrators and Password Administrators.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Password Administrator", + "ObjectId": "966707d0-3269-4727-9be2-8c3a10f19b9d" + }, + { + "ExtensionData": {}, + "Description": "Manage all aspects of Entra Permissions Management.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Permissions Management Administrator", + "ObjectId": "af78dc32-cf4d-46f9-ba4e-4428526346b5" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of the Power BI product.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Power BI Administrator", + "ObjectId": "a9ea8996-122f-4c74-9520-8edcd192826c" + }, + { + "ExtensionData": {}, + "Description": "Can create and manage all aspects of Microsoft Dynamics 365, PowerApps and Microsoft Flow.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Power Platform Administrator", + "ObjectId": "11648597-926c-4cf3-9c36-bcebb0ba8dcc" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of printers and printer connectors.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Printer Administrator", + "ObjectId": "644ef478-e28f-4e28-b9dc-3fdde9aa0b1f" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of printers and printer connectors.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Printer Technician", + "ObjectId": "e8cef6f1-e4bd-4ea8-bc07-4b8d950f4477" + }, + { + "ExtensionData": {}, + "Description": "Allowed to view, set and reset authentication method information for any user (admin or non-admin).", + "IsEnabled": true, + "IsSystem": true, + "Name": "Privileged Authentication Administrator", + "ObjectId": "7be44c8a-adaf-4e2a-84d6-ab2649e08a13" + }, + { + "ExtensionData": {}, + "Description": "Can manage role assignments in Azure AD, and all aspects of Privileged Identity Management.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Privileged Role Administrator", + "ObjectId": "e8611ab8-c189-46e8-94e1-60213ab1f814" + }, + { + "ExtensionData": {}, + "Description": "Can read sign-in and audit reports.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Reports Reader", + "ObjectId": "4a5d8f65-41da-4de4-8968-e035b65339cf" + }, + { + "ExtensionData": {}, + "Description": "Can create and manage all aspects of Microsoft Search settings.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Search Administrator", + "ObjectId": "0964bb5e-9bdb-4d7b-ac29-58e794862a40" + }, + { + "ExtensionData": {}, + "Description": "Can create and manage the editorial content such as bookmarks, Q and As, locations, floorplan.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Search Editor", + "ObjectId": "8835291a-918c-4fd7-a9ce-faa49f0cf7d9" + }, + { + "ExtensionData": {}, + "Description": "Security Administrator allows ability to read and manage security configuration and reports.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Security Administrator", + "ObjectId": "194ae4cb-b126-40b2-bd5b-6091b380977d" + }, + { + "ExtensionData": {}, + "Description": "Creates and manages security events.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Security Operator", + "ObjectId": "5f2222b1-57c3-48ba-8ad5-d4759f1fde6f" + }, + { + "ExtensionData": {}, + "Description": "Can read security information and reports in Azure AD and Office 365.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Security Reader", + "ObjectId": "5d6b6bb7-de71-4623-b4af-96380a352509" + }, + { + "ExtensionData": {}, + "Description": "Can read service health information and manage support tickets.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Service Support Administrator", + "ObjectId": "f023fd81-a637-4b56-95fd-791ac0226033" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of the SharePoint service.", + "IsEnabled": true, + "IsSystem": true, + "Name": "SharePoint Administrator", + "ObjectId": "f28a1f50-f6e7-4571-818b-6a12f2af6b6c" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of the Skype for Business product.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Skype for Business Administrator", + "ObjectId": "75941009-915a-4869-abe7-691bff18279e" + }, + { + "ExtensionData": {}, + "Description": "Can manage the Microsoft Teams service.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Teams Administrator", + "ObjectId": "69091246-20e8-4a56-aa4d-066075b2a7a8" + }, + { + "ExtensionData": {}, + "Description": "Can manage calling and meetings features within the Microsoft Teams service.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Teams Communications Administrator", + "ObjectId": "baf37b3a-610e-45da-9e62-d9d1e5e8914b" + }, + { + "ExtensionData": {}, + "Description": "Can troubleshoot communications issues within Teams using advanced tools.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Teams Communications Support Engineer", + "ObjectId": "f70938a0-fc10-4177-9e90-2178f8765737" + }, + { + "ExtensionData": {}, + "Description": "Can troubleshoot communications issues within Teams using basic tools.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Teams Communications Support Specialist", + "ObjectId": "fcf91098-03e3-41a9-b5ba-6f0ec8188a12" + }, + { + "ExtensionData": {}, + "Description": "Can perform management related tasks on Teams certified devices.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Teams Devices Administrator", + "ObjectId": "3d762c5a-1b6c-493f-843e-55a3b42923d4" + }, + { + "ExtensionData": {}, + "Description": "Can see only tenant level aggregates in Microsoft 365 Usage Analytics and Productivity Score.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Usage Summary Reports Reader", + "ObjectId": "75934031-6c7e-415a-99d7-48dbd49e875e" + }, + { + "ExtensionData": {}, + "Description": "Can manage all aspects of users and groups, including resetting passwords for limited admins.", + "IsEnabled": true, + "IsSystem": true, + "Name": "User Administrator", + "ObjectId": "fe930be7-5e62-47db-91af-98c3a49a38b1" + }, + { + "ExtensionData": {}, + "Description": "Manage and share Virtual Visits information and metrics from admin centers or the Virtual Visits app.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Virtual Visits Administrator", + "ObjectId": "e300d9e7-4a2b-4295-9eff-f1c78b36cc98" + }, + { + "ExtensionData": {}, + "Description": "Can provision and manage all aspects of Cloud PCs.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Windows 365 Administrator", + "ObjectId": "11451d60-acb2-45eb-a7d6-43d0f0125c13" + }, + { + "ExtensionData": {}, + "Description": "Can create and manage all aspects of Windows Update deployments through the Windows Update for Business deployment service.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Windows Update Deployment Administrator", + "ObjectId": "32696413-001a-46ae-978c-ce0f6b3620d2" + }, + { + "ExtensionData": {}, + "Description": "Workplace Device Join", + "IsEnabled": true, + "IsSystem": true, + "Name": "Workplace Device Join", + "ObjectId": "c34f683f-4d5a-4403-affd-6615e00e3a7f" + }, + { + "ExtensionData": {}, + "Description": "Manage all aspects of Yammer.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Yammer Administrator", + "ObjectId": "810a2642-a034-447f-a5e8-41beaa378541" + } +] diff --git a/src/views/tenant/administration/ListGDAPRelationships.js b/src/views/tenant/administration/ListGDAPRelationships.js index 51a0e031f215..ae40d66ddd40 100644 --- a/src/views/tenant/administration/ListGDAPRelationships.js +++ b/src/views/tenant/administration/ListGDAPRelationships.js @@ -6,19 +6,33 @@ import { useSelector } from 'react-redux' import { CippPageList } from 'src/components/layout' import { cellDateFormatter, cellNullTextFormatter } from 'src/components/tables' import { CippActionsOffcanvas } from 'src/components/utilities' +import GDAPRoles from 'src/data/GDAPRoles' const Actions = (row, rowIndex, formatExtraData) => { const [ocVisible, setOCVisible] = useState(false) const tenant = useSelector((state) => state.app.currentTenant) + + var extendedInfo = [] + row?.accessDetails.unifiedRoles.map((role) => { + for (var x = 0; x < GDAPRoles.length; x++) { + if (GDAPRoles[x].ObjectId == role.roleDefinitionId) { + extendedInfo.push({ + label: GDAPRoles[x].Name, + value: GDAPRoles[x].Description, + }) + break + } + } + }) return ( <> setOCVisible(true)}> Date: Thu, 29 Jun 2023 14:01:00 +0100 Subject: [PATCH 09/20] Update BestPracticeAnalyser.js Fixed "Privacy in Reports" to show correctly when its disabled. --- src/views/tenant/standards/BestPracticeAnalyser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/tenant/standards/BestPracticeAnalyser.js b/src/views/tenant/standards/BestPracticeAnalyser.js index 826b8633e1d5..3361dad1b699 100644 --- a/src/views/tenant/standards/BestPracticeAnalyser.js +++ b/src/views/tenant/standards/BestPracticeAnalyser.js @@ -169,7 +169,7 @@ const BestPracticeAnalyser = () => { { name: 'Privacy in Reports Enabled', selector: (row) => row['PrivacyEnabled'], - cell: cellBooleanFormatter({ reverse: true, warning: true }), + cell: cellBooleanFormatter({ reverse: false, warning: false }), sortable: true, exportSelector: 'PrivacyEnabled', minWidth: '150px', From d45fa2814c74eef340f8e8335c53dfba751d6e63 Mon Sep 17 00:00:00 2001 From: KelvinTegelaar <49186168+KelvinTegelaar@users.noreply.github.com> Date: Thu, 29 Jun 2023 15:07:18 +0200 Subject: [PATCH 10/20] alert popups better --- src/components/layout/AppHeader.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/layout/AppHeader.js b/src/components/layout/AppHeader.js index c74f51eec2b1..e902401f52a9 100644 --- a/src/components/layout/AppHeader.js +++ b/src/components/layout/AppHeader.js @@ -72,6 +72,7 @@ const AppHeader = () => { {dashboard && + dashboard.length >= 1 && dashboard.map((item, index) => (
Date: Thu, 29 Jun 2023 15:23:56 +0200 Subject: [PATCH 11/20] made toasts prettier --- src/components/utilities/Toasts.js | 16 +++------------- src/store/middleware/errorMiddleware.js | 4 +++- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/components/utilities/Toasts.js b/src/components/utilities/Toasts.js index 8ceee3836291..cfc6d99c3b4d 100644 --- a/src/components/utilities/Toasts.js +++ b/src/components/utilities/Toasts.js @@ -45,20 +45,10 @@ const Toast = ({ message, title, onClose, error }) => {
{message} - setVisible(!visible)}> - Details - -
- -
-            {error?.status} - {error?.message}
-          
-
+
+          {error?.status} - {error?.message}
+        
) diff --git a/src/store/middleware/errorMiddleware.js b/src/store/middleware/errorMiddleware.js index 4adfce059a6a..740027f89dc3 100644 --- a/src/store/middleware/errorMiddleware.js +++ b/src/store/middleware/errorMiddleware.js @@ -18,7 +18,9 @@ export const errorMiddleware = 'The Azure Function has taken too long to respond. Try selecting a different report or a single tenant instead' } const message = action.payload?.data || 'A generic error has occurred.' - + if (message.length > 240) { + message = message.substring(0, 240) + '...' + } const toastError = action.payload dispatch( From c5aecb98281e4d209f8ff9563a8fd85ceaf54095 Mon Sep 17 00:00:00 2001 From: Brandon Martinez Date: Thu, 29 Jun 2023 07:58:22 -0700 Subject: [PATCH 12/20] Corrected messages in Device actions, signed commit --- src/views/endpoint/intune/Devices.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/views/endpoint/intune/Devices.js b/src/views/endpoint/intune/Devices.js index b49962591e96..85111eab9967 100644 --- a/src/views/endpoint/intune/Devices.js +++ b/src/views/endpoint/intune/Devices.js @@ -134,8 +134,7 @@ const Offcanvas = (row, rowIndex, formatExtraData) => { modalType: 'POST', modalBody: { keepUserData: false, keepEnrollmentData: true }, modalUrl: `/api/ExecDeviceAction?TenantFilter=${tenant.defaultDomainName}&GUID=${row.id}&Action=cleanWindowsDevice`, - modalCheckbox: 'Remove enrollment data', - modalMessage: 'Are you sure you want to wipe this device?', + modalMessage: 'Are you sure you want to wipe this device, and retain enrollment data?', }, { label: 'Wipe Device, remove enrollment data', @@ -144,7 +143,7 @@ const Offcanvas = (row, rowIndex, formatExtraData) => { modalType: 'POST', modalBody: { keepUserData: false, keepEnrollmentData: false }, modalUrl: `/api/ExecDeviceAction?TenantFilter=${tenant.defaultDomainName}&GUID=${row.id}&Action=cleanWindowsDevice`, - modalMessage: 'Are you sure you want to wipe device, AND remove enrollment data?', + modalMessage: 'Are you sure you want to wipe this device, and remove enrollment data?', }, { label: 'Wipe Device, keep enrollment data, and continue at powerloss', @@ -154,7 +153,7 @@ const Offcanvas = (row, rowIndex, formatExtraData) => { modalBody: { keepEnrollmentData: true, keepUserData: false, useProtectedWipe: true }, modalUrl: `/api/ExecDeviceAction?TenantFilter=${tenant.defaultDomainName}&GUID=${row.id}&Action=cleanWindowsDevice`, modalMessage: - 'Are you sure you want to wipe this device? This will keep enrollment data. Continuing at powerloss may cause boot issues if wipe is interrupted.', + 'Are you sure you want to wipe this device? This will retain enrollment data. Continuing at powerloss may cause boot issues if wipe is interrupted.', }, { label: 'Wipe Device, remove enrollment data, and continue at powerloss', From 6033d9123f263cf0043fe950e1433c464f073e3b Mon Sep 17 00:00:00 2001 From: KelvinTegelaar <49186168+KelvinTegelaar@users.noreply.github.com> Date: Fri, 30 Jun 2023 16:08:59 +0200 Subject: [PATCH 13/20] added device validation --- src/views/endpoint/autopilot/AutopilotAddDevice.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/views/endpoint/autopilot/AutopilotAddDevice.js b/src/views/endpoint/autopilot/AutopilotAddDevice.js index 80e28426fdef..0496ea4e1acc 100644 --- a/src/views/endpoint/autopilot/AutopilotAddDevice.js +++ b/src/views/endpoint/autopilot/AutopilotAddDevice.js @@ -73,7 +73,8 @@ const AddAPDevice = () => { }, }, ] - + const valbutton = (value) => + autopilotData ? undefined : 'You must add at least one device. Did you forget to click add?' const handleOnDrop = (data) => { const importdata = data.map((item) => { const normalizedData = {} @@ -209,6 +210,14 @@ const AddAPDevice = () => { }} + + From 3e83623559bff204d1d402a84a8a8768e92d5c45 Mon Sep 17 00:00:00 2001 From: KelvinTegelaar <49186168+KelvinTegelaar@users.noreply.github.com> Date: Tue, 4 Jul 2023 01:08:02 +0200 Subject: [PATCH 14/20] upped version, removed old references to files and cleared up lic confusion --- LICENSE.CustomLicenses | 1 + src/routes.js | 7 +------ .../endpoint/autopilot/AutopilotAddPolicyTemplate.js | 11 ----------- src/views/endpoint/autopilot/AutopilotAddProfile.js | 1 - .../endpoint/autopilot/AutopilotAddStatusPage.js | 1 - src/views/endpoint/autopilot/AutopilotEditProfile.js | 11 ----------- .../endpoint/autopilot/AutopilotEditStatusPage.js | 11 ----------- version_latest.txt | 2 +- 8 files changed, 3 insertions(+), 42 deletions(-) create mode 100644 LICENSE.CustomLicenses delete mode 100644 src/views/endpoint/autopilot/AutopilotAddPolicyTemplate.js delete mode 100644 src/views/endpoint/autopilot/AutopilotEditProfile.js delete mode 100644 src/views/endpoint/autopilot/AutopilotEditStatusPage.js diff --git a/LICENSE.CustomLicenses b/LICENSE.CustomLicenses new file mode 100644 index 000000000000..cf44562e72c4 --- /dev/null +++ b/LICENSE.CustomLicenses @@ -0,0 +1 @@ +Custom licenses are available upon agreement via Github Sponsorships. Custom licenses will not have to be published in this repository. All contributors automatically agree with this provision. \ No newline at end of file diff --git a/src/routes.js b/src/routes.js index ca216a35f4d1..d14afabdb4b7 100644 --- a/src/routes.js +++ b/src/routes.js @@ -116,12 +116,7 @@ const AutopilotListStatusPages = React.lazy(() => ) const IntuneListPolicies = React.lazy(() => import('src/views/endpoint/intune/MEMListPolicies')) const MEMEditPolicy = React.lazy(() => import('src/views/endpoint/intune/MEMEditPolicy')) -const EditAutopilotProfile = React.lazy(() => - import('src/views/endpoint/autopilot/AutopilotEditProfile'), -) -const EditAutopilotStatusPage = React.lazy(() => - import('src/views/endpoint/autopilot/AutopilotEditStatusPage'), -) + const IntuneCAPolicies = React.lazy(() => import('src/views/endpoint/intune/MEMCAPolicies')) const IntuneAddPolicy = React.lazy(() => import('src/views/endpoint/intune/MEMAddPolicy')) const MEMAddPolicyTemplate = React.lazy(() => diff --git a/src/views/endpoint/autopilot/AutopilotAddPolicyTemplate.js b/src/views/endpoint/autopilot/AutopilotAddPolicyTemplate.js deleted file mode 100644 index d4172564964e..000000000000 --- a/src/views/endpoint/autopilot/AutopilotAddPolicyTemplate.js +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' - -const AutopilotAddPolicyTemplate = (props) => { - return ( -
-

AutopilotAddProfile

-
- ) -} - -export default AutopilotAddPolicyTemplate diff --git a/src/views/endpoint/autopilot/AutopilotAddProfile.js b/src/views/endpoint/autopilot/AutopilotAddProfile.js index 7ab5e5ef7630..4247ea12a19c 100644 --- a/src/views/endpoint/autopilot/AutopilotAddProfile.js +++ b/src/views/endpoint/autopilot/AutopilotAddProfile.js @@ -169,7 +169,6 @@ const ApplyStandard = () => { {!postResults.isSuccess && ( {(props) => { - /* eslint-disable react/prop-types */ return ( <> diff --git a/src/views/endpoint/autopilot/AutopilotAddStatusPage.js b/src/views/endpoint/autopilot/AutopilotAddStatusPage.js index d1845cb59e20..516ee21de8be 100644 --- a/src/views/endpoint/autopilot/AutopilotAddStatusPage.js +++ b/src/views/endpoint/autopilot/AutopilotAddStatusPage.js @@ -141,7 +141,6 @@ const ApplyStandard = () => { {!postResults.isSuccess && ( {(props) => { - /* eslint-disable react/prop-types */ return ( <> diff --git a/src/views/endpoint/autopilot/AutopilotEditProfile.js b/src/views/endpoint/autopilot/AutopilotEditProfile.js deleted file mode 100644 index 1872007188a6..000000000000 --- a/src/views/endpoint/autopilot/AutopilotEditProfile.js +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' - -const EditAutopilotProfile = (props) => { - return ( -
-

Edit Profile

-
- ) -} - -export default EditAutopilotProfile diff --git a/src/views/endpoint/autopilot/AutopilotEditStatusPage.js b/src/views/endpoint/autopilot/AutopilotEditStatusPage.js deleted file mode 100644 index b2e391683991..000000000000 --- a/src/views/endpoint/autopilot/AutopilotEditStatusPage.js +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' - -const EditAutopilotStatusPage = (props) => { - return ( -
-

Edit Status Page

-
- ) -} - -export default EditAutopilotStatusPage diff --git a/version_latest.txt b/version_latest.txt index 084e244cea32..240bba90696a 100644 --- a/version_latest.txt +++ b/version_latest.txt @@ -1 +1 @@ -3.6.0 \ No newline at end of file +3.7.0 \ No newline at end of file From c0689763eda34f7ed3a0bc2411207ccbad0192af Mon Sep 17 00:00:00 2001 From: KelvinTegelaar <49186168+KelvinTegelaar@users.noreply.github.com> Date: Tue, 4 Jul 2023 01:18:30 +0200 Subject: [PATCH 15/20] extra push --- src/routes.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/routes.js b/src/routes.js index d14afabdb4b7..b687ff1e4332 100644 --- a/src/routes.js +++ b/src/routes.js @@ -427,16 +427,6 @@ const routes = [ name: 'List Status Pages', component: AutopilotListStatusPages, }, - { - path: '/endpoint/autopilot/edit-autopilot-profiles', - name: 'Edit Autopilot Profiles', - component: EditAutopilotProfile, - }, - { - path: '/endpoint/autopilot/edit-autopilot-status-page', - name: 'Edit Autopilot Status Page', - component: EditAutopilotStatusPage, - }, { path: '/endpoint/MEM', name: 'MEM' }, { path: '/endpoint/MEM/list-policies', name: 'List MEM Policies', component: IntuneListPolicies }, { path: '/endpoint/MEM/edit-policy', name: 'Edit MEM Policy', component: MEMEditPolicy }, From b025b6cac1b200d2ee5bf4da243b5a51e78302fe Mon Sep 17 00:00:00 2001 From: KelvinTegelaar <49186168+KelvinTegelaar@users.noreply.github.com> Date: Tue, 4 Jul 2023 09:17:56 +0200 Subject: [PATCH 16/20] version update --- public/version_latest.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/version_latest.txt b/public/version_latest.txt index 084e244cea32..240bba90696a 100644 --- a/public/version_latest.txt +++ b/public/version_latest.txt @@ -1 +1 @@ -3.6.0 \ No newline at end of file +3.7.0 \ No newline at end of file From e95b287b06608a83c7c1ae103d6751702bf36396 Mon Sep 17 00:00:00 2001 From: KelvinTegelaar <49186168+KelvinTegelaar@users.noreply.github.com> Date: Wed, 5 Jul 2023 17:44:52 +0200 Subject: [PATCH 17/20] Create CLA.yml --- .github/ISSUE_TEMPLATE/CLA.yml | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/CLA.yml diff --git a/.github/ISSUE_TEMPLATE/CLA.yml b/.github/ISSUE_TEMPLATE/CLA.yml new file mode 100644 index 000000000000..0f8b839fdec9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/CLA.yml @@ -0,0 +1,47 @@ +name: CLA - Contributor License Agreement +description: Sign the CLA for CIPP and CIPP-API +labels: [CLA] + +body: +- type: markdown + attributes: + value: > + CONTRIBUTOR LICENSE AGREEMENT ("Agreement") + + Version 1.0 + + 1. Definitions + + "Contribution" means any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to Kelvin Tegelaar for inclusion in, or documentation of, any of the products owned or managed by Kelvin Tegelaar (the "Work"). For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to Kelvin Tegelaar or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Kelvin Tegelaar for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution." + + "You" (or "Your") means the copyright owner or legal entity authorized by the copyright owner that is making this Agreement with Kelvin Tegelaar. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single contributor. This Agreement applies both to future Contributions and Contributions made prior to the date of this Agreement. + + 2. Grant of Copyright License + + Subject to the terms and conditions of this Agreement, You hereby grant to Kelvin Tegelaar and to recipients of software distributed by Kelvin Tegelaar a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works for the purpose of dual licensing the application. + + 3. Grant of Patent License + + You grant Kelvin Tegelaar, and those who receive the Contribution directly or indirectly from Kelvin Tegelaar, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license under Your patent claims that are necessarily infringed by the Contribution or the combination of the Contribution with the Project to which it was submitted, to make, have made, use, offer to sell, sell, import, and otherwise dispose of the Contribution alone or with the Project. + + 4. Other Rights Reserved + + Each party reserves all rights not expressly granted in this Agreement. No additional licenses or rights whatsoever (including, without limitation, any implied licenses) are granted by implication, exhaustion, estoppel, or otherwise. + + 5. Representations + + You represent that you are legally entitled to grant the above licenses. If your employer(s) has rights to intellectual property that you create, you represent that you have received permission to make Contributions on behalf of that employer, or that your employer has waived such rights for your Contributions to Kelvin Tegelaar. + + You represent that each of Your Contributions is Your original creation. You represent that Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which you are personally aware and which are associated with any part of Your Contributions. + + 6. Project Sale + + In the event that the Project is sold or otherwise transferred in ownership in its entirety to a third party, a sum equivalent to fifteen percent (15%) of the total sale price or value of the consideration received shall be set aside. This sum shall be divided amongst all Contributors who have entered into this Agreement, with each Contributor receiving a portion proportional to the relative quantity and significance of their Contributions to the Project, as determined by Kelvin Tegelaar. The method and timeframe of the distribution shall be at the discretion of Kelvin Tegelaar and shall be communicated + +- type: textarea + attributes: + label: Description + description: > + Type "I Agree" in the text area. + validations: + required: true From 97d6a4e3ebb0b1db662025a211e5b6c1b8fa7fa0 Mon Sep 17 00:00:00 2001 From: KelvinTegelaar <49186168+KelvinTegelaar@users.noreply.github.com> Date: Wed, 5 Jul 2023 17:54:39 +0200 Subject: [PATCH 18/20] Update CLA.yml --- .github/ISSUE_TEMPLATE/CLA.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/CLA.yml b/.github/ISSUE_TEMPLATE/CLA.yml index 0f8b839fdec9..a57e55c5783c 100644 --- a/.github/ISSUE_TEMPLATE/CLA.yml +++ b/.github/ISSUE_TEMPLATE/CLA.yml @@ -28,6 +28,13 @@ body: Each party reserves all rights not expressly granted in this Agreement. No additional licenses or rights whatsoever (including, without limitation, any implied licenses) are granted by implication, exhaustion, estoppel, or otherwise. + You are not expected to provide support for your Contributions, except to the extent you desire to provide + support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in + writing, you provide your Contributions on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES + OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A + PARTICULAR PURPOSE. + 5. Representations You represent that you are legally entitled to grant the above licenses. If your employer(s) has rights to intellectual property that you create, you represent that you have received permission to make Contributions on behalf of that employer, or that your employer has waived such rights for your Contributions to Kelvin Tegelaar. From 7693913334ae18c54fededccf1a8b8992ed18e8b Mon Sep 17 00:00:00 2001 From: KelvinTegelaar <49186168+KelvinTegelaar@users.noreply.github.com> Date: Wed, 5 Jul 2023 17:54:49 +0200 Subject: [PATCH 19/20] Update CLA.yml --- .github/ISSUE_TEMPLATE/CLA.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/CLA.yml b/.github/ISSUE_TEMPLATE/CLA.yml index a57e55c5783c..c2180bb38d05 100644 --- a/.github/ISSUE_TEMPLATE/CLA.yml +++ b/.github/ISSUE_TEMPLATE/CLA.yml @@ -31,9 +31,9 @@ body: You are not expected to provide support for your Contributions, except to the extent you desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, you provide your Contributions on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES - OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A - PARTICULAR PURPOSE. + ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES + OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A + PARTICULAR PURPOSE. 5. Representations From 59515095c089667230fa7b599c9724052d338513 Mon Sep 17 00:00:00 2001 From: KelvinTegelaar <49186168+KelvinTegelaar@users.noreply.github.com> Date: Wed, 5 Jul 2023 18:25:15 +0200 Subject: [PATCH 20/20] Update LICENSE.CustomLicenses --- LICENSE.CustomLicenses | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/LICENSE.CustomLicenses b/LICENSE.CustomLicenses index cf44562e72c4..c66793baf6d3 100644 --- a/LICENSE.CustomLicenses +++ b/LICENSE.CustomLicenses @@ -1 +1,3 @@ -Custom licenses are available upon agreement via Github Sponsorships. Custom licenses will not have to be published in this repository. All contributors automatically agree with this provision. \ No newline at end of file +Custom licenses are available upon agreement via Github Sponsorships. Custom licenses will not have to be published in this repository. All contributors automatically agree with this provision. + +A CLA is signed by contributors if they have contributed before these provisions. Only contributions currently in the running latest release require the CLA to be signed. The CLA is signed by creating a issue using the issue template "CLA". the agreement will be related directly to available CLA template.