Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
d71fca6
Feat: AllTenants stupport for ListTenantAllowBlockList
kris6673 Oct 11, 2025
8c66ece
change to use a tenant selector for ease of deploying to many tenants…
kris6673 Oct 11, 2025
39e93c0
Feat: Refactor add page into drawer for adding tenant allow/block lis…
kris6673 Oct 11, 2025
f1ee804
Feat: Standard to control recovering BitLocker keys for owned devices
kris6673 Oct 12, 2025
87986ae
Feat: Release notes popup
kris6673 Oct 12, 2025
6ec980d
make button cause john is UX man
kris6673 Oct 12, 2025
e15af24
Fix: add AGENTS.md to .gitignore
kris6673 Oct 12, 2025
90a03ac
Merge pull request #4815 from kris6673/release-notes-popup
JohnDuprey Oct 13, 2025
15972c2
Feat: Add refresh functionality for Out Of Office data in CippExchang…
kris6673 Oct 13, 2025
0988155
Fix: Correct fetching state for contact permissions in CippBannerList…
kris6673 Oct 13, 2025
9db42c6
Improve blob caching and avatar response
Oct 14, 2025
b02a735
Merge pull request #4819 from kris6673/refresh
JohnDuprey Oct 14, 2025
3170784
Merge pull request #4814 from kris6673/issue4806
JohnDuprey Oct 14, 2025
7610d1f
Feat: Readd "View release notes" option in AccountPopover
kris6673 Oct 14, 2025
abd2299
Merge pull request #4823 from kris6673/fix-release-notes-bug
rvdwegen Oct 14, 2025
1f7a132
It's LAPS not LAPs :P
isgq-github01 Oct 15, 2025
c093dd3
It's LAPS not LAPs :P
isgq-github01 Oct 15, 2025
09b2dcf
Merge branch 'dev' of https://github.com/isgq-github01/CIPP into dev
isgq-github01 Oct 15, 2025
6571be5
Fix: Update API URL for JIT Admin data fetching
kris6673 Oct 14, 2025
204f1a7
Merge pull request #4827 from isgq-github01/dev
JohnDuprey Oct 15, 2025
c68a64d
Fix: Enhance state handling in getCippFormatting for improved chip re…
kris6673 Oct 15, 2025
f64a3a9
fix backUrl
JohnDuprey Oct 15, 2025
04f59a0
Merge pull request #4830 from kris6673/issue4778
JohnDuprey Oct 16, 2025
bb165f1
Merge pull request #4813 from kris6673/TenantAllowBlockList
JohnDuprey Oct 16, 2025
ba69239
Merge pull request #4829 from kris6673/jit
JohnDuprey Oct 17, 2025
24d3012
add fiolefaultkeyh retreval
KelvinTegelaar Oct 17, 2025
276c160
added operator
KelvinTegelaar Oct 17, 2025
4a0389f
added alert comment field.
KelvinTegelaar Oct 17, 2025
6ac7daf
Update to add new mx alert
KelvinTegelaar Oct 17, 2025
c5ac3f3
1d
KelvinTegelaar Oct 17, 2025
8381c5e
allow selection of country for named locations
KelvinTegelaar Oct 17, 2025
c18ddc4
Feat: add visibility option to group settings form for M365 groups
kris6673 Oct 17, 2025
322c803
(bug): Adjusted data handling to handle cases where ForwardingAddress…
Jr7468 Oct 17, 2025
2cc8b00
Merge pull request #4840 from Jr7468/dev
KelvinTegelaar Oct 18, 2025
9812765
Merge pull request #4839 from kris6673/visibility
KelvinTegelaar Oct 18, 2025
b133105
fix: update confirmation texts to include device names for clarity
kris6673 Oct 19, 2025
5c1ca94
Merge pull request #4845 from kris6673/condition
KelvinTegelaar Oct 20, 2025
435bd8a
Fixes for deploying new EXO rule
Zacgoose Oct 20, 2025
907f757
Merge pull request #4847 from Zacgoose/fix-new-exo-rule
JohnDuprey Oct 20, 2025
5bea198
Add dynamic tenant groups
KelvinTegelaar Oct 22, 2025
5d0f9f7
null safety on policy drawer
JohnDuprey Oct 22, 2025
e9f8f1d
feat: triggered tasks
JohnDuprey Oct 22, 2025
9c3ba84
fix state for edit schedule drawer
JohnDuprey Oct 22, 2025
81a1953
move api results to footer
JohnDuprey Oct 22, 2025
3669d22
tenant group improvements
JohnDuprey Oct 23, 2025
9061d4f
Update CippTenantGroupOffCanvas.jsx
JohnDuprey Oct 23, 2025
5bb4349
automated onboarding, default group creation
KelvinTegelaar Oct 23, 2025
70af2d1
add default groups button
KelvinTegelaar Oct 23, 2025
b5acbe5
improve resource selection box
JohnDuprey Oct 23, 2025
ae16177
add right of boom logo
JohnDuprey Oct 23, 2025
0971989
fix edit template
JohnDuprey Oct 23, 2025
32c8b9d
add issynced prop
JohnDuprey Oct 23, 2025
c3c4c03
version up
KelvinTegelaar Oct 23, 2025
1f08cd4
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar Oct 23, 2025
1308a32
Merge pull request #4857 from KelvinTegelaar/dev
KelvinTegelaar Oct 23, 2025
73e2d0b
Update index.js
JohnDuprey Oct 23, 2025
64facf7
Merge pull request #4858 from KelvinTegelaar/dev
JohnDuprey Oct 23, 2025
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 .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,4 @@ app.log

# AI rules
.*/rules
AGENTS.md
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@
"react-leaflet": "5.0.0",
"react-leaflet-markercluster": "^5.0.0-rc.0",
"react-markdown": "10.1.0",
"rehype-raw": "^7.0.0",
"remark-gfm": "^3.0.1",
"react-media-hook": "^0.5.0",
"react-papaparse": "^4.4.0",
"react-quill": "^2.0.0",
Expand All @@ -112,4 +114,4 @@
"eslint": "9.35.0",
"eslint-config-next": "15.5.2"
}
}
}
4 changes: 2 additions & 2 deletions public/version.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"version": "8.5.2"
}
"version": "8.6.0"
}
19 changes: 17 additions & 2 deletions src/api/ApiCall.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ export function ApiGetCall(props) {
refetchOnReconnect = true,
keepPreviousData = false,
refetchInterval = false,
responseType = "json",
convertToDataUrl = false,
} = props;
const queryClient = useQueryClient();
const dispatch = useDispatch();
Expand Down Expand Up @@ -107,9 +109,22 @@ export function ApiGetCall(props) {
headers: {
"Content-Type": "application/json",
},
responseType: responseType,
});

let responseData = response.data;

// Convert blob to data URL if requested
if (convertToDataUrl && responseType === "blob" && response.data) {
responseData = await new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result);
reader.readAsDataURL(response.data);
});
}

if (onResult) {
onResult(response.data); // Emit each result as it arrives
onResult(responseData); // Emit each result as it arrives
}
if (relatedQueryKeys) {
const clearKeys = Array.isArray(relatedQueryKeys) ? relatedQueryKeys : [relatedQueryKeys];
Expand Down Expand Up @@ -137,7 +152,7 @@ export function ApiGetCall(props) {
});
}, 1000);
}
return response.data;
return responseData;
}
},
staleTime: staleTime,
Expand Down
133 changes: 88 additions & 45 deletions src/components/CippComponents/CippAddEditTenantGroups.jsx
Original file line number Diff line number Diff line change
@@ -1,53 +1,96 @@
import CippFormComponent from "/src/components/CippComponents/CippFormComponent";
import { Stack, Typography } from "@mui/material";
import CippFormSection from "/src/components/CippFormPages/CippFormSection";
import { Typography } from "@mui/material";
import { Grid } from "@mui/system";
import { CippFormTenantSelector } from "./CippFormTenantSelector";
import { CippFormCondition } from "./CippFormCondition";
import CippTenantGroupRuleBuilder from "./CippTenantGroupRuleBuilder";

const CippAddEditTenantGroups = ({ formControl, initialValues, title, backButtonTitle }) => {
const CippAddEditTenantGroups = ({ formControl, initialValues, title, backButtonTitle, hideSubmitButton = false }) => {
return (
<CippFormSection
formControl={formControl}
title={title}
backButtonTitle={backButtonTitle}
postUrl="/api/ExecTenantGroup"
relatedQueryKeys={["TenantGroupListPage"]}
resetForm={false}
customDataformatter={(values) => {
return {
...values,
Action: "AddEdit",
};
}}
initialValues={initialValues}
>
<>
<Typography variant="h6">Properties</Typography>
<Stack spacing={1} sx={{ mt: 2 }}>
<CippFormComponent
type="textField"
name="groupName"
label="Group Name"
placeholder="Enter the name for this group."
formControl={formControl}
required
/>
<CippFormComponent
type="textField"
name="groupDescription"
label="Group Description"
placeholder="Enter a description for this group."
formControl={formControl}
/>
<CippFormTenantSelector
formControl={formControl}
multiple={true}
required={false}
disableClearable={false}
name="members"
valueField="customerId"
placeholder="Select members to add to this group."
/>
</Stack>
</CippFormSection>
<Grid container spacing={2} sx={{ mt: 1 }}>
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="textField"
name="groupName"
label="Group Name"
placeholder="Enter the name for this group."
formControl={formControl}
required
fullWidth
validators={{
required: "Group name is required",
minLength: {
value: 2,
message: "Group name must be at least 2 characters long"
}
}}
/>
</Grid>
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="textField"
name="groupDescription"
label="Group Description"
placeholder="Enter a description for this group."
formControl={formControl}
fullWidth
/>
</Grid>

{/* Group Type Selection */}
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="radio"
name="groupType"
label="Group Type"
options={[
{ label: "Static", value: "static" },
{ label: "Dynamic", value: "dynamic" }
]}
formControl={formControl}
required
defaultValue="static"
/>
</Grid>

{/* Static Group Members - Show only when Static is selected */}
<Grid size={{ xs: 12 }}>
<CippFormCondition
formControl={formControl}
field="groupType"
compareType="is"
compareValue="static"
>
<CippFormTenantSelector
formControl={formControl}
multiple={true}
required={false}
disableClearable={false}
name="members"
valueField="customerId"
placeholder="Select members to add to this group."
/>
</CippFormCondition>
</Grid>

{/* Dynamic Group Rules - Show only when Dynamic is selected */}
<Grid size={{ xs: 12 }}>
<CippFormCondition
formControl={formControl}
field="groupType"
compareType="is"
compareValue="dynamic"
>
<CippTenantGroupRuleBuilder
formControl={formControl}
name="dynamicRules"
/>
</CippFormCondition>
</Grid>
</Grid>
</>
);
};

Expand Down
Loading