Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
7dffc4c
feat: add fuzzy match distance setting to Intune template based on Le…
kris6673 Mar 20, 2026
4fc1b57
feat: add warningMessage support standards
kris6673 Mar 20, 2026
88bc10a
Added UI Elements for adding conditional access policies to package tags
TecharyJames Apr 2, 2026
5ffd20e
Merge remote-tracking branch 'upstream/dev' into Feat-Conditional-acc…
TecharyJames Apr 3, 2026
db57e52
Mark TemplateList as optional and non-creatable
TecharyJames Apr 3, 2026
83d657b
Lookup CA template names via API
TecharyJames Apr 3, 2026
b6438ee
Merge branch 'dev' into Feat-Conditional-accesss-policy-package-tags
KelvinTegelaar Apr 4, 2026
05b9326
chore(deps): bump actions/setup-node from 6.3.0 to 6.4.0
dependabot[bot] Apr 22, 2026
9ae908d
chore(deps): bump recharts from 3.8.0 to 3.8.1
dependabot[bot] Apr 22, 2026
93cfed2
chore(deps): bump @tanstack/react-query-devtools from 5.91.3 to 5.96.2
dependabot[bot] Apr 22, 2026
c22177f
chore(deps): bump mui-tiptap from 1.29.1 to 1.30.0
dependabot[bot] Apr 22, 2026
c3c90af
chore(deps): bump @uiw/react-json-view
dependabot[bot] Apr 22, 2026
a5f2b74
feat: add allTenants support for multiple intune pages
kris6673 Apr 24, 2026
f86925d
Merge branch 'dev' of https://github.com/kris6673/CIPP into alltenant…
kris6673 Apr 25, 2026
1707506
feat: integrate useCippReportDB for data handling
kris6673 Apr 25, 2026
d7d36a3
feat: Add allTenants support for all the Teams SharePoint pages
kris6673 Apr 26, 2026
4d09517
feat(mem): use tooltip-enabled policy details in compare view
kris6673 Apr 30, 2026
17077aa
feat(compare): add null safety
kris6673 Apr 30, 2026
1bcf7bd
feat(intune): show administrative template policy details
kris6673 Apr 30, 2026
5828c00
update standards.json for SMB1001
KelvinTegelaar May 5, 2026
8469fae
deviations count
Zacgoose May 5, 2026
35eff10
fix: Support IPv6 in GeoIP lookup
JohnDuprey May 6, 2026
8818d4b
pass utc to api for nice response message
Zacgoose May 6, 2026
efa060a
Correct support for all tenant mode in the tenant backup page
Zacgoose May 6, 2026
f0b5468
Fix removing row in bulk add user removing the wrong row
Zacgoose May 6, 2026
68331c4
Update CippWizardCSVImport.jsx
Zacgoose May 6, 2026
0ac68ab
public group standard
KelvinTegelaar May 6, 2026
1e668ec
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar May 6, 2026
27af9a2
Empty AllowList Standard for CIS
KelvinTegelaar May 6, 2026
4b2c909
add teasm ZAP standard
KelvinTegelaar May 6, 2026
cdcde9b
standards improvements
KelvinTegelaar May 6, 2026
4832593
Ensure that collaboration invitations are sent to allowed domains only
KelvinTegelaar May 6, 2026
344acd1
Enable reporting for standard AutoAddProxy
Zacgoose May 7, 2026
43bec67
tag and standard updates
KelvinTegelaar May 7, 2026
d8aa246
TAP audit log prebuilt alert
Zacgoose May 7, 2026
d3c75d8
more test suite tags
KelvinTegelaar May 7, 2026
d53745f
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar May 7, 2026
7c05747
Add Usage Location field to JIT Admin and template forms (#5910)
joaadvi May 7, 2026
b898428
Merge pull request #5951 from kris6673/admin-templates
KelvinTegelaar May 7, 2026
397d0c9
add purview section
KelvinTegelaar May 7, 2026
1b51746
feat: add AutoDiscover data retrieval to CippDomainCards
kris6673 May 7, 2026
038c9f6
Add Investigate status to custom tests
Zacgoose May 8, 2026
b0661ac
Update AuditLogTemplates.json
Zacgoose May 8, 2026
f2d78d1
Merge pull request #5974 from kris6673/issue5972
KelvinTegelaar May 8, 2026
922be32
Merge pull request #5971 from joaadvi/feat/jit-admin-usage-location
KelvinTegelaar May 8, 2026
406b2d5
Merge pull request #5950 from kris6673/feat/compare-intune-policy-too…
KelvinTegelaar May 8, 2026
182f0c8
pushing new compliance menus
KelvinTegelaar May 8, 2026
78fa718
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar May 8, 2026
2a59c79
feat: add manager and sponsor properties to user patching
kris6673 May 8, 2026
ad8ca14
Merge pull request #5976 from kris6673/5933
KelvinTegelaar May 8, 2026
d251423
fix(jit-admin): submit TAP lifetime within policy bounds
kris6673 May 8, 2026
6e1466a
Merge pull request #5977 from kris6673/5965
KelvinTegelaar May 8, 2026
ed9d0f9
Disable all tenant support for message trace
Zacgoose May 8, 2026
8e09f22
add make to portals list
rvdwegen May 8, 2026
b05e092
feat(standards): add by-standard alignment summary view
kris6673 May 8, 2026
3f7ed1f
feat: add Indirect Reseller Link component and integrate into onboard…
JohnDuprey May 8, 2026
3878e5c
fix typo
JohnDuprey May 8, 2026
f482fa8
fix: minor tweaks
JohnDuprey May 8, 2026
64a5439
chore: bump version to 10.4.4
JohnDuprey May 8, 2026
45f1d72
purview adding
KelvinTegelaar May 9, 2026
b8abed9
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar May 9, 2026
e3ed181
fix alert mode
KelvinTegelaar May 10, 2026
98d5d94
Custom Test - Alert on X statuses
Zacgoose May 11, 2026
4b9efd8
Update index.js
Zacgoose May 11, 2026
cfe8c70
adds #5939
KelvinTegelaar May 11, 2026
0d42f67
#5939
KelvinTegelaar May 11, 2026
64e4080
implemenets #5948
KelvinTegelaar May 11, 2026
445820d
Better intune policy support for alltenants list
Zacgoose May 11, 2026
8b79d99
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
Zacgoose May 11, 2026
55dd9cc
HVE user page
Zacgoose May 11, 2026
9cee69d
eclusions everywhere
KelvinTegelaar May 11, 2026
14461b4
eclusions everywhere
KelvinTegelaar May 11, 2026
1b77b78
Update manifest for PWA chrome install option
Zacgoose May 11, 2026
08c793d
Update manifest.json
Zacgoose May 11, 2026
da6dc7f
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
Zacgoose May 11, 2026
20e2f55
implements #5986
KelvinTegelaar May 11, 2026
bc41239
implements #5986
KelvinTegelaar May 11, 2026
8e99c01
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar May 11, 2026
2e9b9fd
fixed weird button
KelvinTegelaar May 11, 2026
2a1b912
Merge pull request #5984 from kris6673/by-standards-view
KelvinTegelaar May 11, 2026
35711f8
Merge branch 'dev' of https://github.com/kris6673/CIPP into allTenant…
kris6673 May 11, 2026
5ca3e9a
Merge branch 'dev' into alltenants-intune
kris6673 May 11, 2026
be88cc9
Merge branch 'dev' into levenshtein-distance
kris6673 May 11, 2026
dd0ba6f
Merge pull request #5920 from kris6673/alltenants-intune
KelvinTegelaar May 11, 2026
2f84947
Merge branch 'dev' into levenshtein-distance
kris6673 May 11, 2026
fd23c0d
Merge branch 'dev' into allTenants-SP
kris6673 May 11, 2026
fe72217
Merge pull request #5794 from TecharyJames/Feat-Conditional-accesss-p…
KelvinTegelaar May 11, 2026
ccf4e9c
Merge pull request #5685 from kris6673/levenshtein-distance
KelvinTegelaar May 11, 2026
0fc7b3c
Merge pull request #5921 from kris6673/allTenants-SP
KelvinTegelaar May 11, 2026
4b0800b
Merge pull request #5903 from KelvinTegelaar/dependabot/github_action…
KelvinTegelaar May 11, 2026
7bcd507
Merge pull request #5906 from KelvinTegelaar/dependabot/npm_and_yarn/…
KelvinTegelaar May 11, 2026
cef8744
Merge pull request #5905 from KelvinTegelaar/dependabot/npm_and_yarn/…
KelvinTegelaar May 11, 2026
06e1645
Merge pull request #5904 from KelvinTegelaar/dependabot/npm_and_yarn/…
KelvinTegelaar May 11, 2026
7dcb867
Merge pull request #5908 from KelvinTegelaar/dependabot/npm_and_yarn/…
KelvinTegelaar May 11, 2026
a4915df
chore(deps): bump @tanstack/react-query-persist-client
dependabot[bot] May 11, 2026
fe4bd7f
fix: allow alltenants sync on onedrive/sharepoint
JohnDuprey May 11, 2026
d7e8b0b
fix: tweak toggle button size
JohnDuprey May 11, 2026
15939e2
feat: improve run standard now UX
JohnDuprey May 12, 2026
1cb6a11
fix: enhance standard name retrieval logic for better matching
JohnDuprey May 12, 2026
6cd8c63
chore: linting
JohnDuprey May 12, 2026
4f2d499
feat: enhance intune template details display
JohnDuprey May 12, 2026
0a70010
fix: update translation keys and adjust template usage references
JohnDuprey May 12, 2026
63c85df
OneDrive Sharing disable
KelvinTegelaar May 12, 2026
6c55bc4
OneDrive Sharing disable
KelvinTegelaar May 12, 2026
7054bfc
Add AlertUserReportPhising
KelvinTegelaar May 12, 2026
d00ebb7
chore: bump version to 10.4.5
JohnDuprey May 12, 2026
335e40a
Merge pull request #5907 from KelvinTegelaar/dependabot/npm_and_yarn/…
KelvinTegelaar May 12, 2026
19c48ea
auth options
Zacgoose May 12, 2026
36071e5
Module updates and import changes
Zacgoose May 13, 2026
c094610
Fix bulk mailbox rule changes
Zacgoose May 13, 2026
72d8658
Add Apps and SP to universal search
Zacgoose May 13, 2026
ba196dd
expand side nav slightly for ux
KelvinTegelaar May 13, 2026
8551ef5
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar May 13, 2026
52a4763
Nice CA policy editor and template creator/editor
Zacgoose May 13, 2026
41efc5b
Update CippCAPolicyBuilder.jsx
Zacgoose May 13, 2026
60a5073
fixes tenantfilter property
KelvinTegelaar May 13, 2026
fd6a9e3
Logs
Zacgoose May 14, 2026
b5d48bc
logging
Zacgoose May 14, 2026
12a0727
comingsoon
KelvinTegelaar May 14, 2026
db20afa
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/worktrees/blissful-golick-d405ab
Submodule blissful-golick-d405ab added at 071035
2 changes: 1 addition & 1 deletion .github/workflows/Node_Project_Check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
steps:
- uses: actions/checkout@v6
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v6.3.0
uses: actions/setup-node@v6.4.0
with:
node-version: ${{ matrix.node-version }}
- name: Install and Build Test
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cipp_dev_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
echo "node_version=$node_sanitized_version" >> $GITHUB_OUTPUT
- name: Set up Node.js
uses: actions/setup-node@v6.3.0
uses: actions/setup-node@v6.4.0
with:
node-version: ${{ steps.get_node_version.outputs.node_version }}

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cipp_frontend_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
echo "node_version=$node_sanitized_version" >> $GITHUB_OUTPUT
- name: Set up Node.js
uses: actions/setup-node@v6.3.0
uses: actions/setup-node@v6.4.0
with:
node-version: ${{ steps.get_node_version.outputs.node_version }}

Expand Down
1 change: 1 addition & 0 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const config = {
'mui-tiptap',
'recharts',
'@react-pdf/renderer',
'lodash',
],
webpackMemoryOptimizations: true,
preloadEntriesOnStart: false,
Expand Down
30 changes: 10 additions & 20 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cipp",
"version": "10.4.3",
"version": "10.4.5",
"author": "CIPP Contributors",
"homepage": "https://cipp.app/",
"bugs": {
Expand Down Expand Up @@ -43,37 +43,35 @@
"@reduxjs/toolkit": "^2.11.2",
"@tanstack/query-sync-storage-persister": "^5.90.25",
"@tanstack/react-query": "^5.96.2",
"@tanstack/react-query-devtools": "^5.51.11",
"@tanstack/react-query-persist-client": "^5.76.0",
"@tanstack/react-query-devtools": "^5.96.2",
"@tanstack/react-query-persist-client": "^5.96.2",
"@tanstack/react-table": "^8.19.2",
"@tiptap/core": "^3.4.1",
"@tiptap/extension-heading": "^3.4.1",
"@tiptap/extension-image": "^3.20.5",
"@tiptap/extension-table": "^3.19.0",
"@tiptap/pm": "^3.22.3",
"@tiptap/react": "^3.20.5",
"@tiptap/starter-kit": "^3.20.5",
"@uiw/react-json-view": "^2.0.0-alpha.41",
"@vvo/tzdb": "^6.198.0",
"apexcharts": "5.10.4",
"axios": "1.15.0",
"date-fns": "4.1.0",
"diff": "^8.0.3",
"dompurify": "^3.4.2",
"eml-parse-js": "^1.2.0-beta.0",
"export-to-csv": "^1.3.0",
"formik": "2.4.9",
"gray-matter": "4.0.3",
"i18next": "25.8.18",
"javascript-time-ago": "^2.6.2",
"jspdf": "^4.2.0",
"jspdf-autotable": "^5.0.7",
"leaflet": "^1.9.4",
"leaflet-defaulticon-compatibility": "^0.1.2",
"leaflet.markercluster": "^1.5.3",
"lodash": "^4.18.1",
"lodash.isequal": "4.5.0",
"material-react-table": "^3.0.1",
"monaco-editor": "^0.55.1",
"mui-tiptap": "^1.29.1",
"mui-tiptap": "^1.30.0",
"next": "^16.2.2",
"nprogress": "0.2.0",
"numeral": "2.0.6",
Expand All @@ -82,15 +80,12 @@
"react": "19.2.5",
"react-apexcharts": "2.1.0",
"react-beautiful-dnd": "13.1.1",
"react-copy-to-clipboard": "^5.1.0",
"react-dom": "19.2.5",
"react-dropzone": "15.0.0",
"react-error-boundary": "^6.1.1",
"react-grid-layout": "^2.2.3",
"react-hook-form": "^7.72.0",
"react-hot-toast": "2.6.0",
"react-html-parser": "^2.0.2",
"react-i18next": "16.6.5",
"react-leaflet": "5.0.0",
"react-leaflet-markercluster": "^5.0.0-rc.0",
"react-markdown": "10.1.0",
Expand All @@ -101,28 +96,23 @@
"react-syntax-highlighter": "^16.1.0",
"react-time-ago": "^7.3.3",
"react-virtuoso": "^4.18.5",
"react-window": "^2.2.7",
"recharts": "^3.7.0",
"recharts": "^3.8.1",
"redux": "5.0.1",
"redux-devtools-extension": "2.13.9",
"redux-persist": "^6.0.0",
"redux-thunk": "3.1.0",
"rehype-raw": "^7.0.0",
"remark-gfm": "^4.0.0",
"remark-parse": "^11.0.0",
"simplebar": "6.3.3",
"simplebar-react": "3.3.2",
"stylis-plugin-rtl": "2.1.1",
"typescript": "5.9.3",
"unified": "^11.0.5",
"yup": "1.7.1"
},
"devDependencies": {
"@svgr/webpack": "8.1.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"eslint": "^9.39.4",
"eslint-config-next": "^16.2.3",
"eslint-config-prettier": "^10.1.8",
"prettier": "^3.8.1",
"prettier-eslint": "^16.4.2"
"prettier": "^3.8.1"
}
}
Binary file added public/assets/integrations/autotask.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/integrations/connectwise.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions public/assets/integrations/kaseya.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 16 additions & 5 deletions public/manifest.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,26 @@
{
"short_name": "Carpatin",
"name": "Carpatin",
"short_name": "CIPP",
"name": "CIPP - CyberDrian Improved Partner Portal",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": ".",
"start_url": "/",
"scope": "/",
"display": "standalone",
"theme_color": "#000000",
"theme_color": "#ffffff",
"background_color": "#ffffff"
}
}
8 changes: 8 additions & 0 deletions public/sw.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Minimal service worker to satisfy Chrome's installability criteria.
// This does NOT cache anything or provide offline support — it simply
// passes all requests through to the network so Chrome treats the site
// as an installable web app.

self.addEventListener('install', () => self.skipWaiting())
self.addEventListener('activate', (event) => event.waitUntil(self.clients.claim()))
self.addEventListener('fetch', () => {})
2 changes: 1 addition & 1 deletion public/version.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"version": "10.4.3"
"version": "10.4.5"
}
27 changes: 27 additions & 0 deletions src/components/CippCards/CippDomainCards.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,13 @@ export const CippDomainCards = ({ domain: propDomain = "", fullwidth = false })
waiting: !!domain,
});

const { data: autoDiscoverData, isFetching: autoDiscoverLoading } = ApiGetCall({
url: "/api/ListDomainHealth",
queryKey: `autodiscover-${domain}`,
data: { Domain: domain, Action: "ReadAutoDiscover" },
waiting: !!domain,
});

const { data: httpsData, isFetching: httpsLoading } = ApiGetCall({
url: "/api/ListDomainHealth",
queryKey: `https-${domain}-${subdomains}`,
Expand Down Expand Up @@ -684,6 +691,26 @@ export const CippDomainCards = ({ domain: propDomain = "", fullwidth = false })
}
/>
</Grid>
<Grid size={{ md: gridItemSize, xs: 12 }}>
<DomainResultCard
title="AutoDiscover"
data={autoDiscoverData}
isFetching={autoDiscoverLoading}
info={
<div>
<p>
AutoDiscover ({autoDiscoverData?.RecordType || "None"}):
</p>
<CippCodeBlock code={autoDiscoverData?.Record || "No record found"} />
<ResultList
passes={autoDiscoverData?.ValidationPasses}
warns={autoDiscoverData?.ValidationWarns}
fails={autoDiscoverData?.ValidationFails}
/>
</div>
}
/>
</Grid>
{enableHttps && (
<Grid size={{ md: gridItemSize, xs: 12 }}>
<DomainResultCard
Expand Down
29 changes: 15 additions & 14 deletions src/components/CippCards/CippRemediationCard.jsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { Button, Typography, List, ListItem, SvgIcon } from "@mui/material";
import CippButtonCard from "./CippButtonCard"; // Adjust the import path as needed
import { CippApiDialog } from "../CippComponents/CippApiDialog";
import { useDialog } from "../../hooks/use-dialog";
import { Sync } from "@mui/icons-material";
import { ShieldCheckIcon } from "@heroicons/react/24/outline";
import { Button, Typography, List, ListItem, SvgIcon } from '@mui/material'
import CippButtonCard from './CippButtonCard' // Adjust the import path as needed
import { CippApiDialog } from '../CippComponents/CippApiDialog'
import { useDialog } from '../../hooks/use-dialog'
import { Sync } from '@mui/icons-material'
import { ShieldCheckIcon } from '@heroicons/react/24/outline'

export default function CippRemediationCard(props) {
const { userPrincipalName, isFetching, userId, tenantFilter, restartProcess } = props;
const createDialog = useDialog();
const { userPrincipalName, isFetching, userId, tenantFilter, restartProcess } = props
const createDialog = useDialog()
return (
<CippButtonCard
title={
Expand Down Expand Up @@ -60,20 +60,21 @@ export default function CippRemediationCard(props) {
<ListItem>Disconnect all current sessions</ListItem>
<ListItem>Remove all MFA methods for the user</ListItem>
<ListItem>Disable all inbox rules for the user</ListItem>
<ListItem>Disable OneDrive sharing</ListItem>
</List>
<CippApiDialog
title="Remediate User"
createDialog={createDialog}
api={{
url: "/api/execBecRemediate",
url: '/api/execBecRemediate',
confirmText:
"This will remediate this user, blocking their signin, resetting their password, disconnecting their sessions, and disabling all their inbox rules. Are you sure you want to continue?",
type: "POST",
data: { tenantFilter: tenantFilter, userId: "userId", username: "userPrincipalName" },
replacementBehaviour: "removeNulls",
'This will remediate this user, blocking their signin, resetting their password, disconnecting their sessions, and disabling all their inbox rules. Are you sure you want to continue?',
type: 'POST',
data: { tenantFilter: tenantFilter, userId: 'userId', username: 'userPrincipalName' },
replacementBehaviour: 'removeNulls',
}}
row={props}
/>
</CippButtonCard>
);
)
}
10 changes: 5 additions & 5 deletions src/components/CippCards/CippStandardsDialog.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useState } from 'react'
import _ from 'lodash'
import { get } from 'lodash'
import {
Dialog,
DialogTitle,
Expand Down Expand Up @@ -311,7 +311,7 @@ export const CippStandardsDialog = ({ open, onClose, standardsData, currentTenan
</Typography>
<Stack spacing={0.5}>
{info.addedComponent.map((component, componentIndex) => {
const value = _.get(templateItem, component.name)
const value = get(templateItem, component.name)
let displayValue = 'N/A'

if (value) {
Expand Down Expand Up @@ -427,7 +427,7 @@ export const CippStandardsDialog = ({ open, onClose, standardsData, currentTenan
let extractedValue = null

// Try direct access first
componentValue = _.get(config, component.name)
componentValue = get(config, component.name)

// If direct access fails and component name contains dots (nested structure)
if (
Expand All @@ -441,7 +441,7 @@ export const CippStandardsDialog = ({ open, onClose, standardsData, currentTenan
if (pathParts[0] === 'standards' && config.standards) {
// Remove 'standards.' prefix and try to find the value in config.standards
const nestedPath = pathParts.slice(1).join('.')
extractedValue = _.get(config.standards, nestedPath)
extractedValue = get(config.standards, nestedPath)

// If still not found, try alternative nested structures
// Some standards have double nesting like: config.standards.StandardName.fieldName
Expand All @@ -452,7 +452,7 @@ export const CippStandardsDialog = ({ open, onClose, standardsData, currentTenan
) {
const standardName = pathParts[1]
const fieldPath = pathParts.slice(2).join('.')
extractedValue = _.get(
extractedValue = get(
config.standards,
`${standardName}.${fieldPath}`
)
Expand Down
29 changes: 29 additions & 0 deletions src/components/CippCards/CippUniversalSearchV2.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,16 @@ export const CippUniversalSearchV2 = React.forwardRef(
router.push(
`/identity/administration/groups/group?groupId=${itemData.id}&tenantFilter=${tenantDomain}`,
);
} else if (searchType === "Applications") {
if (match.Type === "Apps") {
router.push(
`/tenant/administration/applications/app-registration?appId=${itemData.appId || itemData.id}&tenantFilter=${tenantDomain}`,
);
} else {
router.push(
`/tenant/administration/applications/enterprise-app?spId=${itemData.id}&tenantFilter=${tenantDomain}`,
);
}
} else if (searchType === "Pages") {
router.push(match.path, undefined, { shallow: true });
}
Expand Down Expand Up @@ -389,6 +399,11 @@ export const CippUniversalSearchV2 = React.forwardRef(
icon: "Group",
onClick: () => handleTypeChange("Groups"),
},
{
label: "Applications",
icon: "Apps",
onClick: () => handleTypeChange("Applications"),
},
{
label: "BitLocker",
icon: "FilePresent",
Expand Down Expand Up @@ -730,6 +745,20 @@ const Results = ({
)}
</>
)}
{searchType === "Applications" && (
<>
{itemData.appId && (
<Typography variant="body2" color="text.secondary">
{highlightMatch(itemData.appId || "")}
</Typography>
)}
{itemData.publisherName && (
<Typography variant="body2" color="text.secondary" sx={{ mt: 0.5 }}>
{highlightMatch(itemData.publisherName || "")}
</Typography>
)}
</>
)}
<Typography
variant="caption"
color="text.secondary"
Expand Down
6 changes: 3 additions & 3 deletions src/components/CippComponents/CippAppPermissionBuilder.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import {
import { useWatch } from "react-hook-form";
import { CippCardTabPanel } from "./CippCardTabPanel";
import { CippApiResults } from "./CippApiResults";
import _ from "lodash";
import { isEqual } from "lodash";
import { CippCodeBlock } from "./CippCodeBlock";
import { CippOffCanvas } from "./CippOffCanvas";
import { FileDropzone } from "../file-dropzone";
Expand Down Expand Up @@ -388,7 +388,7 @@ const CippAppPermissionBuilder = ({
});
setExpanded("00000003-0000-0000-c000-000000000000"); // Automatically expand Microsoft Graph
}
} else if (!_.isEqual(currentPermissions, initialPermissions)) {
} else if (!isEqual(currentPermissions, initialPermissions)) {
setSelectedApp([]); // Avoid redundant updates
setNewPermissions(currentPermissions);
setInitialPermissions(currentPermissions);
Expand All @@ -398,7 +398,7 @@ const CippAppPermissionBuilder = ({
initialAppIds.includes(sp.appId),
)?.sort((a, b) => a.displayName.localeCompare(b.displayName));

if (!_.isEqual(selectedApp, newApps)) {
if (!isEqual(selectedApp, newApps)) {
setSelectedApp(newApps); // Prevent unnecessary updates
}

Expand Down
Loading