diff --git a/src/components/tables/CippTable.jsx b/src/components/tables/CippTable.jsx
index f3ea486ee243..e858c5e28fc6 100644
--- a/src/components/tables/CippTable.jsx
+++ b/src/components/tables/CippTable.jsx
@@ -414,6 +414,7 @@ export default function CippTable({
(modalMessage, modalUrl, modalType = 'GET', modalBody, modalInput, modalDropdown) => {
if (modalType === 'GET') {
ModalService.confirm({
+ getData: () => inputRef.current?.value,
body: (
{modalMessage}
@@ -466,6 +467,18 @@ export default function CippTable({
title: 'Confirm',
onConfirm: async () => {
const resultsarr = []
+ const selectedValue = inputRef.current.value
+ let additionalFields = {}
+ if (inputRef.current.nodeName === 'SELECT') {
+ const selectedItem = dropDownInfo.data.find(
+ (item) => item[modalDropdown.valueField] === selectedValue,
+ )
+ if (selectedItem && modalDropdown.addedField) {
+ Object.keys(modalDropdown.addedField).forEach((key) => {
+ additionalFields[key] = selectedItem[modalDropdown.addedField[key]]
+ })
+ }
+ }
for (const row of selectedRows) {
setLoopRunning(true)
const urlParams = new URLSearchParams(modalUrl.split('?')[1])
@@ -492,26 +505,13 @@ export default function CippTable({
}
}
const NewModalUrl = `${modalUrl.split('?')[0]}?${urlParams.toString()}`
- const selectedValue = inputRef.current.value
- let additionalFields = {}
- if (inputRef.current.nodeName === 'SELECT') {
- const selectedItem = dropDownInfo.data.find(
- (item) => item[modalDropdown.valueField] === selectedValue,
- )
- if (selectedItem && modalDropdown.addedField) {
- Object.keys(modalDropdown.addedField).forEach((key) => {
- additionalFields[key] = selectedItem[modalDropdown.addedField[key]]
- })
- }
- }
-
const results = await genericPostRequest({
path: NewModalUrl,
values: {
...modalBody,
...newModalBody,
...additionalFields,
- ...{ input: inputRef.current.value },
+ ...{ input: selectedValue },
},
})
resultsarr.push(results)
diff --git a/src/data/standards.json b/src/data/standards.json
index 92252d5a36ad..c9326b8b5f1f 100644
--- a/src/data/standards.json
+++ b/src/data/standards.json
@@ -102,9 +102,9 @@
"label": "Show header"
},
{
- "type":"boolean",
- "name":"standards.Branding.isFooterShown",
- "label":"Show footer"
+ "type": "boolean",
+ "name": "standards.Branding.isFooterShown",
+ "label": "Show footer"
}
],
"label": "Set branding for the tenant",
@@ -156,8 +156,36 @@
"cat": "Global Standards",
"tag": ["mediumimpact", "CIS", "spo_idle_session_timeout"],
"helpText": "Enables and sets Idle session timeout for Microsoft 365 to 1 hour. This policy affects most M365 web apps",
- "addedComponent": [],
- "label": "Enable 1 hour Activity based Timeout",
+ "addedComponent": [
+ {
+ "type": "Select",
+ "label": "Select value",
+ "name": "standards.ActivityBasedTimeout.timeout",
+ "values": [
+ {
+ "label": "1 Hour",
+ "value": "01:00:00"
+ },
+ {
+ "label": "3 Hours",
+ "value": "03:00:00"
+ },
+ {
+ "label": "6 Hours",
+ "value": "06:00:00"
+ },
+ {
+ "label": "12 Hours",
+ "value": "12:00:00"
+ },
+ {
+ "label": "24 Hours",
+ "value": "1.00:00:00"
+ }
+ ]
+ }
+ ],
+ "label": "Enable Activity based Timeout",
"impact": "Medium Impact",
"impactColour": "warning"
},
diff --git a/src/views/endpoint/intune/MEMListAppProtection.jsx b/src/views/endpoint/intune/MEMListAppProtection.jsx
index 569608ec916c..f017ba2f2065 100644
--- a/src/views/endpoint/intune/MEMListAppProtection.jsx
+++ b/src/views/endpoint/intune/MEMListAppProtection.jsx
@@ -48,7 +48,7 @@ const Actions = (row, rowIndex, formatExtraData) => {
color: 'danger',
modal: true,
icon:
,
- modalUrl: `/api/RemovePolicy?TenantFilter=${tenant.defaultDomainName}&ID=${row.id}&URLName=${row.URLName}`,
+ modalUrl: `/api/RemovePolicy?TenantFilter=${tenant.defaultDomainName}&ID=${row.id}&URLName=managedAppPolicies`,
modalMessage: 'Are you sure you want to delete this policy?',
},
]}
@@ -122,6 +122,15 @@ const AppProtectionList = () => {
expandableRows: true,
expandableRowsComponent: ExpandedComponent,
expandOnRowClicked: true,
+ selectableRows: true,
+ actionsList: [
+ {
+ label: 'Delete Policy',
+ modal: true,
+ modalUrl: `api/RemovePolicy?TenantFilter=${tenant?.defaultDomainName}&ID=!id&URLName=managedAppPolicies`,
+ modalMessage: 'Are you sure you want to convert these users to a shared mailbox?',
+ },
+ ],
},
}}
/>
diff --git a/src/views/endpoint/intune/MEMListCompliance.jsx b/src/views/endpoint/intune/MEMListCompliance.jsx
index 6fbe0cdf84ce..9b970031bb1d 100644
--- a/src/views/endpoint/intune/MEMListCompliance.jsx
+++ b/src/views/endpoint/intune/MEMListCompliance.jsx
@@ -71,7 +71,7 @@ const Actions = (row, rowIndex, formatExtraData) => {
color: 'danger',
modal: true,
icon:
,
- modalUrl: `/api/RemovePolicy?TenantFilter=${tenant.defaultDomainName}&ID=${row.id}&URLName=${row.URLName}`,
+ modalUrl: `/api/RemovePolicy?TenantFilter=${tenant.defaultDomainName}&ID=${row.id}&URLName=deviceCompliancePolicies`,
modalMessage: 'Are you sure you want to delete this policy?',
},
]}
@@ -145,6 +145,15 @@ const ComplianceList = () => {
expandableRows: true,
expandableRowsComponent: ExpandedComponent,
expandOnRowClicked: true,
+ selectableRows: true,
+ actionsList: [
+ {
+ label: 'Delete Policy',
+ modal: true,
+ modalUrl: `api/RemovePolicy?TenantFilter=${tenant?.defaultDomainName}&ID=!id&URLName=deviceCompliancePolicies`,
+ modalMessage: 'Are you sure you want to convert these users to a shared mailbox?',
+ },
+ ],
},
}}
/>
diff --git a/src/views/endpoint/intune/MEMListPolicies.jsx b/src/views/endpoint/intune/MEMListPolicies.jsx
index 0ea3ed1a26f4..f9f82026cd52 100644
--- a/src/views/endpoint/intune/MEMListPolicies.jsx
+++ b/src/views/endpoint/intune/MEMListPolicies.jsx
@@ -140,6 +140,15 @@ const IntuneList = () => {
expandableRows: true,
expandableRowsComponent: ExpandedComponent,
expandOnRowClicked: true,
+ selectableRows: true,
+ actionsList: [
+ {
+ label: 'Delete Policy',
+ modal: true,
+ modalUrl: `api/RemovePolicy?TenantFilter=${tenant?.defaultDomainName}&ID=!id&URLName=!URLName`,
+ modalMessage: 'Are you sure you want to convert these users to a shared mailbox?',
+ },
+ ],
},
}}
/>
diff --git a/src/views/identity/administration/OffboardingWizard.jsx b/src/views/identity/administration/OffboardingWizard.jsx
index b5b344969c7a..571eba706e8b 100644
--- a/src/views/identity/administration/OffboardingWizard.jsx
+++ b/src/views/identity/administration/OffboardingWizard.jsx
@@ -47,7 +47,18 @@ const OffboardingWizard = () => {
data: users = [],
isFetching: usersIsFetching,
error: usersError,
- } = useListUsersQuery({ tenantDomain })
+ } = useGenericGetRequestQuery({
+ path: `/api/ListGraphRequest`,
+ params: {
+ TenantFilter: tenantDomain,
+ Endpoint: 'users',
+ $select:
+ 'id,displayName,givenName,mail,mailNickname,proxyAddresses,usageLocation,userPrincipalName,userType,assignedLicenses,onPremisesSyncEnabled',
+ $count: true,
+ $orderby: 'displayName',
+ $top: 999,
+ },
+ })
const {
data: recipients = [],
@@ -121,7 +132,7 @@ const OffboardingWizard = () => {
({
+ values={users?.Results?.map((user) => ({
value: user.userPrincipalName,
name: `${user.displayName} <${user.userPrincipalName}>`,
}))}
@@ -177,36 +188,30 @@ const OffboardingWizard = () => {
x.mail)
- .map((user) => ({
- value: user.mail,
- name: `${user.displayName} <${user.mail}>`,
- }))}
+ values={users.Results?.filter((x) => x.mail).map((user) => ({
+ value: user.mail,
+ name: `${user.displayName} <${user.mail}>`,
+ }))}
placeholder={!usersIsFetching ? 'Select user' : 'Loading...'}
name="AccessNoAutomap"
/>
x.mail)
- .map((user) => ({
- value: user.mail,
- name: `${user.displayName} <${user.mail}>`,
- }))}
+ values={users.Results?.filter((x) => x.mail).map((user) => ({
+ value: user.mail,
+ name: `${user.displayName} <${user.mail}>`,
+ }))}
placeholder={!usersIsFetching ? 'Select user' : 'Loading...'}
name="AccessAutomap"
/>
x.mail)
- .map((user) => ({
- value: user.mail,
- name: `${user.displayName} <${user.mail}>`,
- }))}
+ values={users.Results?.filter((x) => x.mail).map((user) => ({
+ value: user.mail,
+ name: `${user.displayName} <${user.mail}>`,
+ }))}
placeholder={!usersIsFetching ? 'Select user' : 'Loading...'}
name="OnedriveAccess"
/>
diff --git a/src/views/identity/administration/Roles.jsx b/src/views/identity/administration/Roles.jsx
index 79383c4f007d..7e103a130920 100644
--- a/src/views/identity/administration/Roles.jsx
+++ b/src/views/identity/administration/Roles.jsx
@@ -23,7 +23,12 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
>
Role Group Name:
{row.DisplayName}
- Member Names:
{row.Members ? {row.Members}
: Role has no members.
}
+ Member Names:
{' '}
+ {row.Members ? (
+ row.Members.split(',').map((member, index) => {member}
)
+ ) : (
+ Role has no members.
+ )}
>
)
@@ -53,6 +58,26 @@ const columns = [
exportSelector: 'Members',
omit: true,
},
+ {
+ selector: (row) => row['Members'],
+ name: 'Assignments',
+ sortable: false,
+ cell: (row) => {
+ if (row.Members === 'none') {
+ return null
+ }
+ const memberCount = row.Members ? row.Members.split(',').length : 0
+ const memberText =
+ row.Members && row.Members !== 'none' ? `Member${memberCount === 1 ? '' : 's'}` : null
+ return (
+ <>
+ {memberCount} {memberText}
+ >
+ )
+ },
+ exportSelector: 'Members',
+ maxWidth: '150px',
+ },
{
selector: (row) => 'View Members',
name: 'Members',
diff --git a/src/views/tenant/administration/ListGDAPRelationships.jsx b/src/views/tenant/administration/ListGDAPRelationships.jsx
index 11ae56e89e33..25b332ffdcaf 100644
--- a/src/views/tenant/administration/ListGDAPRelationships.jsx
+++ b/src/views/tenant/administration/ListGDAPRelationships.jsx
@@ -251,7 +251,7 @@ const GDAPRelationships = () => {
columns,
reportName: `GDAP-Relationships`,
path: '/api/ListGraphRequest',
- params: { Endpoint: 'tenantRelationships/delegatedAdminRelationships' },
+ params: { Endpoint: 'tenantRelationships/delegatedAdminRelationships', $top: 300 },
}}
/>