From 72be80f363dd0260366df1edbefe576d8729285d Mon Sep 17 00:00:00 2001
From: Jr7468 <126574444+Jr7468@users.noreply.github.com>
Date: Wed, 27 Sep 2023 11:50:33 +0100
Subject: [PATCH 01/35] Shipped groupName
---
src/views/identity/administration/EditGroup.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/views/identity/administration/EditGroup.js b/src/views/identity/administration/EditGroup.js
index 1c9e2d44d187..928962af5b83 100644
--- a/src/views/identity/administration/EditGroup.js
+++ b/src/views/identity/administration/EditGroup.js
@@ -111,6 +111,7 @@ const EditGroup = () => {
allowExternal: values.allowExternal,
sendCopies: values.sendCopies,
mail: group[0].mail,
+ groupName: group[0].DisplayName,
}
//window.alert(JSON.stringify(shippedValues))
genericPostRequest({ path: '/api/EditGroup', values: shippedValues }).then((res) => {
From 8ad810204032521eb27ca9419dbdda62189ddf0d Mon Sep 17 00:00:00 2001
From: Jr7468
Date: Wed, 27 Sep 2023 18:25:03 +0100
Subject: [PATCH 02/35] Changed MFARergister OC to point to the Entra page
---
src/views/identity/administration/Users.js | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/views/identity/administration/Users.js b/src/views/identity/administration/Users.js
index bd3df44d1aa4..60262c606bd6 100644
--- a/src/views/identity/administration/Users.js
+++ b/src/views/identity/administration/Users.js
@@ -17,6 +17,7 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
const viewLink = `/identity/administration/users/view?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}&userEmail=${row.userPrincipalName}`
const editLink = `/identity/administration/users/edit?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}`
const OffboardLink = `/identity/administration/offboarding-wizard?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}`
+ const userEntraLink = `https://entra.microsoft.com/${tenant.defaultDomainName}/#view/Microsoft_AAD_UsersAndTenants/UserProfileMenuBlade/~/overview/userId/${row.id}//hidePreviewBanner~/true`
let licenses = []
row.assignedLicenses?.map((licenseAssignment, idx) => {
@@ -94,10 +95,8 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
},
{
label: 'Rerequire MFA registration',
- color: 'info',
- modal: true,
- modalUrl: `/api/ExecResetMFA?TenantFilter=${tenant.defaultDomainName}&ID=${row.id}`,
- modalMessage: 'Are you sure you want to enable MFA for this user?',
+ link: userEntraLink,
+ color: `info`,
},
{
label: 'Send MFA Push',
From f876f70ba7c52689d86d55556460a4ce88e13e4f Mon Sep 17 00:00:00 2001
From: KelvinTegelaar
Date: Thu, 28 Sep 2023 01:12:33 +0200
Subject: [PATCH 03/35] new profile
---
src/_nav.js | 17 +-
src/components/layout/AppHeader.js | 40 +++-
src/components/utilities/CippProfile.js | 1 -
src/components/utilities/PageSizeSwitcher.js | 11 +-
src/components/utilities/ReportImage.js | 34 ++--
.../utilities/TenantListSelector.js | 14 +-
src/components/utilities/ThemeSwitcher.js | 11 +-
src/components/utilities/UsageLocation.js | 8 +-
src/routes.js | 4 +
src/scss/_custom.scss | 12 ++
src/views/cipp/UserSettings.js | 177 ++++++++++++++++++
11 files changed, 282 insertions(+), 47 deletions(-)
create mode 100644 src/views/cipp/UserSettings.js
diff --git a/src/_nav.js b/src/_nav.js
index c243b18c4e12..683cd830fdaa 100644
--- a/src/_nav.js
+++ b/src/_nav.js
@@ -660,9 +660,14 @@ const _nav = [
items: [
{
component: CNavItem,
- name: 'Settings',
+ name: 'Application Settings',
to: '/cipp/settings',
},
+ {
+ component: CNavItem,
+ name: 'User Settings',
+ to: '/cipp/user-settings',
+ },
{
component: CNavItem,
name: 'Scheduler',
@@ -670,14 +675,14 @@ const _nav = [
},
{
component: CNavItem,
- name: 'SAM Setup Wizard',
- to: '/cipp/setup',
+ name: 'Logbook',
+ to: '/cipp/logs',
},
+
{
component: CNavItem,
- name: 'Documentation',
- href: 'https://cipp.app',
- target: '_blank',
+ name: 'SAM Setup Wizard',
+ to: '/cipp/setup',
},
],
},
diff --git a/src/components/layout/AppHeader.js b/src/components/layout/AppHeader.js
index 0bc158732883..10f0ea74dc3c 100644
--- a/src/components/layout/AppHeader.js
+++ b/src/components/layout/AppHeader.js
@@ -12,6 +12,7 @@ import {
CImage,
CSidebarBrand,
CButton,
+ CFormSwitch,
} from '@coreui/react'
import { AppHeaderDropdown, AppHeaderSearch } from 'src/components/header'
import { TenantSelector } from '../utilities'
@@ -20,11 +21,12 @@ import cyberdrainlogodark from 'src/assets/images/CIPP_Dark.png'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faCaretSquareLeft, faCaretSquareRight } from '@fortawesome/free-solid-svg-icons'
-import { toggleSidebarShow } from 'src/store/features/app'
+import { setCurrentTheme, toggleSidebarShow } from 'src/store/features/app'
import { useMediaPredicate } from 'react-media-hook'
import { useLoadAlertsDashQuery } from 'src/store/api/app'
import { Link } from 'react-router-dom'
import { useLocation } from 'react-router-dom'
+import { RFFCFormCheck } from '../forms'
const AppHeader = () => {
const dispatch = useDispatch()
@@ -33,6 +35,19 @@ const AppHeader = () => {
const currentTheme = useSelector((state) => state.app.currentTheme)
const preferredTheme = useMediaPredicate('(prefers-color-scheme: dark)') ? 'impact' : 'cyberdrain'
const { data: dashboard } = useLoadAlertsDashQuery()
+ const SwitchTheme = () => {
+ let targetTheme = preferredTheme
+ if (currentTheme === 'impact') {
+ targetTheme = 'cyberdrain'
+ } else {
+ targetTheme = 'impact'
+ }
+ document.body.classList = []
+ document.body.classList.add(`theme-${targetTheme}`)
+ document.body.dataset.theme = targetTheme
+
+ dispatch(setCurrentTheme({ theme: targetTheme }))
+ }
return (
<>
@@ -76,7 +91,28 @@ const AppHeader = () => {
-
+
+
+ {currentTheme === 'impact' ? (
+
+ ) : (
+
+ )}
+
diff --git a/src/components/utilities/CippProfile.js b/src/components/utilities/CippProfile.js
index e033bc568df9..7b559bc08289 100644
--- a/src/components/utilities/CippProfile.js
+++ b/src/components/utilities/CippProfile.js
@@ -16,7 +16,6 @@ import TenantListSelector from './TenantListSelector'
const CippProfile = () => {
const { data: profile, isFetching, isLoading } = useLoadClientPrincipalQuery()
-
return (
<>
diff --git a/src/components/utilities/PageSizeSwitcher.js b/src/components/utilities/PageSizeSwitcher.js
index f3d10641e81b..acef59d16ab6 100644
--- a/src/components/utilities/PageSizeSwitcher.js
+++ b/src/components/utilities/PageSizeSwitcher.js
@@ -13,21 +13,22 @@ const PageSizeSwitcher = () => {
}
return (
-
- Select Default Page Size
+ <>
+
+ Default page size
+
{pageSizes.map((tablePageSize, index) => (
SwitchPageSize(tablePageSize)}
- active={tablePageSize === currentTablePageSize ? true : false}
- color="secondary"
+ color={tablePageSize === currentTablePageSize ? 'primary' : 'secondary'}
key={index}
>
{tablePageSize}
))}
-
+ >
)
}
diff --git a/src/components/utilities/ReportImage.js b/src/components/utilities/ReportImage.js
index d5aead2b9069..800110e22930 100644
--- a/src/components/utilities/ReportImage.js
+++ b/src/components/utilities/ReportImage.js
@@ -19,9 +19,8 @@ const ReportImage = () => {
}
return (
-
- Upload a default report image
-
+
+
{
id="contained-button-file"
onChange={(e) => Switchusage(e)}
/>
-
- Suggested image size: 120x100. This is a per user setting.
- inputRef.current.click()}
- className="me-2"
- >
- Upload File
-
-
-
-
-
-
+
Select a report image. This image has a size of 120x100 and can be up to 64KB.
+
inputRef.current.click()}
+ className="me-2"
+ >
+ Upload new image
+
+
+
+
+
+
)
}
diff --git a/src/components/utilities/TenantListSelector.js b/src/components/utilities/TenantListSelector.js
index 94eba4c0bfdc..d5a247ea1b7d 100644
--- a/src/components/utilities/TenantListSelector.js
+++ b/src/components/utilities/TenantListSelector.js
@@ -12,25 +12,25 @@ const TenantListSelector = () => {
}
return (
-
- Select default Tenant List
+ <>
+
+ Tenant overview page
+
SwitchPageSize(true)}
- active={TenantListSelector ? true : false}
- color="secondary"
+ color={TenantListSelector ? 'primary' : 'secondary'}
>
Compressed
SwitchPageSize(false)}
- active={TenantListSelector ? false : true}
- color="secondary"
+ color={TenantListSelector ? 'secondary' : 'primary'}
>
Full list
-
+ >
)
}
diff --git a/src/components/utilities/ThemeSwitcher.js b/src/components/utilities/ThemeSwitcher.js
index baf69b76c362..012694f0ed8a 100644
--- a/src/components/utilities/ThemeSwitcher.js
+++ b/src/components/utilities/ThemeSwitcher.js
@@ -43,14 +43,15 @@ const ThemeSwitcher = () => {
}
return (
-
- Select Theme
+ <>
+
+ Theme
+
{themes.map((theme, index) => (
SwitchTheme(theme)}
- active={theme === currentTheme ? true : false}
- color="secondary"
+ color={theme === currentTheme ? 'primary' : 'secondary'}
key={index}
title={themeInfo(theme).description}
>
@@ -58,7 +59,7 @@ const ThemeSwitcher = () => {
))}
-
+ >
)
}
diff --git a/src/components/utilities/UsageLocation.js b/src/components/utilities/UsageLocation.js
index 10ac692681ec..7996611baea1 100644
--- a/src/components/utilities/UsageLocation.js
+++ b/src/components/utilities/UsageLocation.js
@@ -13,8 +13,10 @@ const UsageLocation = () => {
}
return (
-
- Select default usage location
+ <>
+
+ Default Usage Location
+
+ >
)
}
diff --git a/src/routes.js b/src/routes.js
index 75079b327e2c..e2813a3f363d 100644
--- a/src/routes.js
+++ b/src/routes.js
@@ -11,6 +11,8 @@ const EditUser = React.lazy(() => import('src/views/identity/administration/Edit
const ViewUser = React.lazy(() => import('src/views/identity/administration/ViewUser'))
const Groups = React.lazy(() => import('src/views/identity/administration/Groups'))
const AddGroup = React.lazy(() => import('src/views/identity/administration/AddGroup'))
+const UserSettings = React.lazy(() => import('src/views/cipp/UserSettings'))
+
const AddGroupTemplates = React.lazy(() =>
import('src/views/identity/administration/AddGroupTemplate'),
)
@@ -601,6 +603,8 @@ const routes = [
component: MailboxClientAccessSettingsList,
},
{ name: 'Message Trace', path: '/email/reports/message-trace', component: MessageTrace },
+ { path: '/cipp/user-settings', name: 'User Settings', component: UserSettings },
+
{
name: 'Phishing Policies',
path: '/email/reports/phishing-policies',
diff --git a/src/scss/_custom.scss b/src/scss/_custom.scss
index 4536cb3bab38..f3d67afc5e08 100644
--- a/src/scss/_custom.scss
+++ b/src/scss/_custom.scss
@@ -1,5 +1,17 @@
@use 'sass:color';
+.custom-switch-wrapper {
+ position: relative;
+ display: inline-block;
+}
+.switch-icon {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ pointer-events: none; /* Ensures the icon doesn't interfere with the switch toggle */
+ z-index: 1; /* Place the icon above the switch */
+}
.sr-only {
border: 0 !important;
clip: rect(1px, 1px, 1px, 1px) !important;
diff --git a/src/views/cipp/UserSettings.js b/src/views/cipp/UserSettings.js
new file mode 100644
index 000000000000..cedd304eff4d
--- /dev/null
+++ b/src/views/cipp/UserSettings.js
@@ -0,0 +1,177 @@
+import React, { useEffect, useState } from 'react'
+import {
+ CBadge,
+ CButton,
+ CCallout,
+ CCard,
+ CCardBody,
+ CCardHeader,
+ CCardTitle,
+ CCol,
+ CForm,
+ CFormLabel,
+ CListGroup,
+ CListGroupItem,
+ CRow,
+ CSpinner,
+ CTooltip,
+} from '@coreui/react'
+import useQuery from 'src/hooks/useQuery'
+import { useDispatch, useSelector } from 'react-redux'
+import { Field, Form, FormSpy } from 'react-final-form'
+import {
+ Condition,
+ RFFCFormCheck,
+ RFFCFormInput,
+ RFFCFormRadio,
+ RFFCFormSwitch,
+ RFFCFormTextarea,
+ RFFSelectSearch,
+} from 'src/components/forms'
+import countryList from 'src/data/countryList'
+
+import {
+ useGenericGetRequestQuery,
+ useLazyGenericGetRequestQuery,
+ useLazyGenericPostRequestQuery,
+} from 'src/store/api/app'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faCircleNotch, faEdit, faEye } from '@fortawesome/free-solid-svg-icons'
+import { CippContentCard, CippPage, CippPageList } from 'src/components/layout'
+import { password } from 'src/validators'
+import {
+ CellDate,
+ CellDelegatedPrivilege,
+ cellBadgeFormatter,
+ cellBooleanFormatter,
+ cellDateFormatter,
+} from 'src/components/tables'
+import { CellTip, cellGenericFormatter } from 'src/components/tables/CellGenericFormat'
+import DatePicker from 'react-datepicker'
+import 'react-datepicker/dist/react-datepicker.css'
+import TenantListSelector from 'src/components/utilities/TenantListSelector'
+import {
+ ModalService,
+ PageSizeSwitcher,
+ TenantSelector,
+ ThemeSwitcher,
+ UsageLocation,
+} from 'src/components/utilities'
+import CippCodeOffCanvas from 'src/components/utilities/CippCodeOffcanvas'
+import ReportImage from 'src/components/utilities/ReportImage'
+import { useLoadClientPrincipalQuery } from 'src/store/api/auth'
+
+const Offcanvas = (row, rowIndex, formatExtraData) => {
+ const [ExecuteGetRequest, getResults] = useLazyGenericGetRequestQuery()
+ const [ocVisible, setOCVisible] = useState(false)
+
+ const handleDeleteSchedule = (apiurl, message) => {
+ ModalService.confirm({
+ title: 'Confirm',
+ body: {message}
,
+ onConfirm: () => ExecuteGetRequest({ path: apiurl }),
+ confirmLabel: 'Continue',
+ cancelLabel: 'Cancel',
+ })
+ }
+ let jsonResults
+ try {
+ jsonResults = JSON.parse(row.Results)
+ } catch (error) {
+ jsonResults = row.Results
+ }
+
+ return (
+ <>
+
+ setOCVisible(true)}>
+
+
+
+
+
+ handleDeleteSchedule(
+ `/api/RemoveScheduledItem?&ID=${row.RowKey}`,
+ 'Do you want to delete this job?',
+ )
+ }
+ size="sm"
+ variant="ghost"
+ color="danger"
+ >
+
+
+
+ setOCVisible(false)}
+ />
+ >
+ )
+}
+
+const UserSettings = () => {
+ const [genericPostRequest, postResults] = useLazyGenericPostRequestQuery()
+ const { data: profile, isFetching, isLoading } = useLoadClientPrincipalQuery()
+
+ const onSubmit = (values) => {
+ genericPostRequest({ path: '/api/AddScheduledItem', values: shippedValues }).then((res) => {})
+ }
+
+ return (
+ <>
+
+
+
+
+ User Settings
+
+
+
+
+ Username
+
+ {profile.clientPrincipal.userDetails}
+
+
+
+ Roles
+ {profile.clientPrincipal.userRoles
+ .filter((role) => role !== 'anonymous' && role !== 'authenticated')
+ .map((r, index) => (
+
+ {r}
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )
+}
+
+export default UserSettings
From 75432f2d130e1e0cda17cdbe4cda6d6acce218ae Mon Sep 17 00:00:00 2001
From: Jr7468 <126574444+Jr7468@users.noreply.github.com>
Date: Thu, 28 Sep 2023 11:30:48 +0100
Subject: [PATCH 04/35] Update Users.js
Changed MFA Rerequire button to navigate to user Entra Page.
---
src/views/identity/administration/Users.js | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/views/identity/administration/Users.js b/src/views/identity/administration/Users.js
index bd3df44d1aa4..30565819fa50 100644
--- a/src/views/identity/administration/Users.js
+++ b/src/views/identity/administration/Users.js
@@ -17,6 +17,7 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
const viewLink = `/identity/administration/users/view?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}&userEmail=${row.userPrincipalName}`
const editLink = `/identity/administration/users/edit?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}`
const OffboardLink = `/identity/administration/offboarding-wizard?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}`
+ const entraLink = `https://entra.microsoft.com/${tenant.defaultDomainName}/#view/Microsoft_AAD_UsersAndTenants/UserProfileMenuBlade/~/overview/userId/${row.id}/hidePreviewBanner~/true`
let licenses = []
row.assignedLicenses?.map((licenseAssignment, idx) => {
@@ -95,9 +96,9 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
{
label: 'Rerequire MFA registration',
color: 'info',
- modal: true,
- modalUrl: `/api/ExecResetMFA?TenantFilter=${tenant.defaultDomainName}&ID=${row.id}`,
- modalMessage: 'Are you sure you want to enable MFA for this user?',
+ link: entraLink,
+ color: 'info',
+ target: '_blank',
},
{
label: 'Send MFA Push',
From 4f25cf9b65cd5731cd7249e327c65342a5e0852f Mon Sep 17 00:00:00 2001
From: Jr7468 <126574444+Jr7468@users.noreply.github.com>
Date: Thu, 28 Sep 2023 16:01:02 +0100
Subject: [PATCH 05/35] Update Users.js
---
src/views/identity/administration/Users.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/views/identity/administration/Users.js b/src/views/identity/administration/Users.js
index 30565819fa50..f8954f1fb045 100644
--- a/src/views/identity/administration/Users.js
+++ b/src/views/identity/administration/Users.js
@@ -95,7 +95,6 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
},
{
label: 'Rerequire MFA registration',
- color: 'info',
link: entraLink,
color: 'info',
target: '_blank',
From d7b1a38b26ccda1d9efd30227219f799e1b06249 Mon Sep 17 00:00:00 2001
From: Roel van der Wegen
Date: Fri, 29 Sep 2023 14:50:59 +0100
Subject: [PATCH 06/35] Add compliance portal
---
src/data/portals.json | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/data/portals.json b/src/data/portals.json
index 3c09331a2440..bef73cee6a5f 100644
--- a/src/data/portals.json
+++ b/src/data/portals.json
@@ -62,6 +62,15 @@
"external": true,
"icon": "shield-alt"
},
+ {
+ "label": "Compliance Portal",
+ "name": "Compliance_Portal",
+ "url": "https://compliance.microsoft.com/?tid=customerId",
+ "variable": "customerId",
+ "target": "_blank",
+ "external": true,
+ "icon": "shield-alt"
+ },
{
"label": "Sharepoint Admin",
"name": "Sharepoint_Admin",
From 2f600d6348c6d7b8fc69f6e19e8d39a4dbddd5ae Mon Sep 17 00:00:00 2001
From: John Duprey
Date: Sun, 1 Oct 2023 18:01:10 -0400
Subject: [PATCH 07/35] CippTable Updates
- Flatten nested objects in CSV export
- Add exportFiltered boolean parameter
---
src/components/tables/CippTable.js | 34 +++++++++++++++++++++++++++---
1 file changed, 31 insertions(+), 3 deletions(-)
diff --git a/src/components/tables/CippTable.js b/src/components/tables/CippTable.js
index 288685f43f1a..55b6fd7b27ce 100644
--- a/src/components/tables/CippTable.js
+++ b/src/components/tables/CippTable.js
@@ -113,6 +113,7 @@ export default function CippTable({
dynamicColumns = true,
defaultFilterText = '',
isModal = false,
+ exportFiltered = false,
filterlist,
tableProps: {
keyField = 'id',
@@ -480,9 +481,14 @@ export default function CippTable({
return null
})
- const filtered =
- Array.isArray(data) && data.length > 0
- ? data.map((obj) =>
+ var exportData = data
+ if (exportFiltered) {
+ exportData = filteredItems
+ }
+
+ var filtered =
+ Array.isArray(exportData) && exportData.length > 0
+ ? exportData.map((obj) =>
// eslint-disable-next-line no-sequences
/* keys.reduce((acc, curr) => ((acc[curr] = obj[curr]), acc), {}),*/
keys.reduce((acc, curr) => {
@@ -510,6 +516,28 @@ export default function CippTable({
)
: []
+ const flatten = (obj, prefix) => {
+ let output = {}
+ for (let k in obj) {
+ let val = obj[k]
+ const newKey = prefix ? prefix + '.' + k : k
+ if (typeof val === 'object') {
+ if (Array.isArray(val)) {
+ const { ...arrToObj } = val
+ const newObj = flatten(arrToObj, newKey)
+ output = { ...output, ...newObj }
+ } else {
+ const newObj = flatten(val, newKey)
+ output = { ...output, ...newObj }
+ }
+ } else {
+ output = { ...output, [newKey]: val }
+ }
+ }
+ return output
+ }
+ filtered = filtered.map((item) => flatten(item))
+
if (!disablePDFExport) {
if (dynamicColumns === true) {
const addColumn = (columnname) => {
From 2163e31a144115165ed53ad9c6aac66513fd6712 Mon Sep 17 00:00:00 2001
From: Jr7468
Date: Wed, 4 Oct 2023 22:06:53 +0100
Subject: [PATCH 08/35] Cleaned up merge issues
---
src/views/identity/administration/Users.js | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/src/views/identity/administration/Users.js b/src/views/identity/administration/Users.js
index 9290b6529db2..f8954f1fb045 100644
--- a/src/views/identity/administration/Users.js
+++ b/src/views/identity/administration/Users.js
@@ -17,11 +17,7 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
const viewLink = `/identity/administration/users/view?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}&userEmail=${row.userPrincipalName}`
const editLink = `/identity/administration/users/edit?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}`
const OffboardLink = `/identity/administration/offboarding-wizard?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}`
-<<<<<<< HEAD
- const userEntraLink = `https://entra.microsoft.com/${tenant.defaultDomainName}/#view/Microsoft_AAD_UsersAndTenants/UserProfileMenuBlade/~/overview/userId/${row.id}//hidePreviewBanner~/true`
-=======
const entraLink = `https://entra.microsoft.com/${tenant.defaultDomainName}/#view/Microsoft_AAD_UsersAndTenants/UserProfileMenuBlade/~/overview/userId/${row.id}/hidePreviewBanner~/true`
->>>>>>> 4f25cf9b65cd5731cd7249e327c65342a5e0852f
let licenses = []
row.assignedLicenses?.map((licenseAssignment, idx) => {
@@ -99,14 +95,9 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
},
{
label: 'Rerequire MFA registration',
-<<<<<<< HEAD
- link: userEntraLink,
- color: `info`,
-=======
link: entraLink,
color: 'info',
target: '_blank',
->>>>>>> 4f25cf9b65cd5731cd7249e327c65342a5e0852f
},
{
label: 'Send MFA Push',
From 1723f1a279f28b1e4bfcc98ae3472ce4caec0ec6 Mon Sep 17 00:00:00 2001
From: Jr7468
Date: Thu, 5 Oct 2023 12:17:47 +0100
Subject: [PATCH 09/35] Added external: true flag and modified URL
---
src/views/identity/administration/Users.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/views/identity/administration/Users.js b/src/views/identity/administration/Users.js
index f8954f1fb045..69796c07b423 100644
--- a/src/views/identity/administration/Users.js
+++ b/src/views/identity/administration/Users.js
@@ -17,7 +17,7 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
const viewLink = `/identity/administration/users/view?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}&userEmail=${row.userPrincipalName}`
const editLink = `/identity/administration/users/edit?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}`
const OffboardLink = `/identity/administration/offboarding-wizard?userId=${row.id}&tenantDomain=${tenant.defaultDomainName}`
- const entraLink = `https://entra.microsoft.com/${tenant.defaultDomainName}/#view/Microsoft_AAD_UsersAndTenants/UserProfileMenuBlade/~/overview/userId/${row.id}/hidePreviewBanner~/true`
+ const entraLink = `https://entra.microsoft.com/${tenant.defaultDomainName}/#view/Microsoft_AAD_UsersAndTenants/UserProfileMenuBlade/~/UserAuthMethods/userId/${row.id}/hidePreviewBanner~/true`
let licenses = []
row.assignedLicenses?.map((licenseAssignment, idx) => {
@@ -98,6 +98,7 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
link: entraLink,
color: 'info',
target: '_blank',
+ external: true,
},
{
label: 'Send MFA Push',
From 2de0dd6f62a8422cc7d40e2ef244a5781d7562da Mon Sep 17 00:00:00 2001
From: KelvinTegelaar
Date: Fri, 6 Oct 2023 20:32:50 +0200
Subject: [PATCH 10/35] improving profile pages
---
src/components/utilities/PageSizeSwitcher.js | 2 +-
src/components/utilities/ReportImage.js | 22 +++++++------------
.../utilities/TenantListSelector.js | 2 +-
src/components/utilities/ThemeSwitcher.js | 2 +-
src/components/utilities/UsageLocation.js | 2 +-
src/views/cipp/UserSettings.js | 18 +++++++++------
6 files changed, 23 insertions(+), 25 deletions(-)
diff --git a/src/components/utilities/PageSizeSwitcher.js b/src/components/utilities/PageSizeSwitcher.js
index acef59d16ab6..01294259aba6 100644
--- a/src/components/utilities/PageSizeSwitcher.js
+++ b/src/components/utilities/PageSizeSwitcher.js
@@ -15,7 +15,7 @@ const PageSizeSwitcher = () => {
return (
<>
- Default page size
+
Default page size
{pageSizes.map((tablePageSize, index) => (
diff --git a/src/components/utilities/ReportImage.js b/src/components/utilities/ReportImage.js
index 800110e22930..eb042a8aa734 100644
--- a/src/components/utilities/ReportImage.js
+++ b/src/components/utilities/ReportImage.js
@@ -19,8 +19,14 @@ const ReportImage = () => {
}
return (
-
-
+
+
Default Report Image
+
+
+
+
inputRef.current.click()}>
+ Upload new image
+
{
id="contained-button-file"
onChange={(e) => Switchusage(e)}
/>
-
Select a report image. This image has a size of 120x100 and can be up to 64KB.
-
inputRef.current.click()}
- className="me-2"
- >
- Upload new image
-
-
-
-
)
diff --git a/src/components/utilities/TenantListSelector.js b/src/components/utilities/TenantListSelector.js
index d5a247ea1b7d..5fc6e4f088e8 100644
--- a/src/components/utilities/TenantListSelector.js
+++ b/src/components/utilities/TenantListSelector.js
@@ -14,7 +14,7 @@ const TenantListSelector = () => {
return (
<>
- Tenant overview page
+
Tenant overview page
{
return (
<>
- Theme
+
Theme
{themes.map((theme, index) => (
diff --git a/src/components/utilities/UsageLocation.js b/src/components/utilities/UsageLocation.js
index 7996611baea1..c3f4e9947a13 100644
--- a/src/components/utilities/UsageLocation.js
+++ b/src/components/utilities/UsageLocation.js
@@ -15,7 +15,7 @@ const UsageLocation = () => {
return (
<>
- Default Usage Location
+
Default Usage Location