Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{
"name": "cipp",
"version": "10.10.1",
"version": "10.10.2",
"author": "CIPP Contributors",
"homepage": "https://cipp.app/",
"bugs": {
"url": "https://github.com/CyberDrain/CIPP/issues"
},
"license": "AGPL-3.0",
"engines": {
"node": "^22.22.0"
"node": "^22.22.2"
},
"repository": {
"type": "git",
Expand Down Expand Up @@ -139,7 +139,7 @@
"eslint": "^9.39.4",
"eslint-config-next": "^16.3.4",
"eslint-config-prettier": "^10.1.8",
"jsdom": "29.0.1",
"jsdom": "30.0.1",
"msw": "2.15.0",
"msw-storybook-addon": "3.0.0",
"playwright": "1.63.0",
Expand All @@ -160,4 +160,4 @@
"sharp": "^0.35.0",
"monaco-editor/dompurify": "^3.4.14"
}
}
}
2 changes: 1 addition & 1 deletion public/intune-definitions/03.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/05.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/07.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/08.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/0b.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/0e.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/0f.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/13.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/15.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/17.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/1a.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/1b.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/20.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/24.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/25.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/28.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/2c.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/30.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/31.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/33.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/34.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/38.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/3d.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/3e.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/41.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/42.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/46.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/49.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/4c.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/50.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/51.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/54.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/55.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/59.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/5a.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/5b.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/64.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/69.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/70.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/76.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/86.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/88.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/89.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/8e.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/8f.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/93.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/94.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/9a.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/9b.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/9c.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/9e.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/a1.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/a2.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/ac.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/ad.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/af.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/b2.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/b5.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/b7.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/ba.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/bb.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/be.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/bf.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/c4.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/c6.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/cb.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/cd.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/cf.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/d4.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/d6.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/d7.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/d8.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/da.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/e6.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/e7.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/e9.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/f0.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/f3.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/f8.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/f9.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/fb.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/fc.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/fd.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/fe.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intune-definitions/ff.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/intuneCategories.json

Large diffs are not rendered by default.

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.10.1"
"version": "10.10.2"
}
22 changes: 20 additions & 2 deletions src/components/CippComponents/CippAddUserDrawer.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { useState, useEffect } from "react";
import { CippIcons } from "../../utils/icon-registry"
import { Button, Box } from "@mui/material";
import { Alert, Button, Box } from "@mui/material";
import { useForm, useWatch, useFormState } from "react-hook-form";
import { CippOffCanvas } from "./CippOffCanvas";
import { CippApiResults } from "./CippApiResults";
Expand All @@ -22,6 +22,13 @@ export const CippAddUserDrawer = ({
const [formResetKey, setFormResetKey] = useState(0);
const userSettingsDefaults = useSettings();

// User creation targets a single tenant. Under "All Tenants" the tenant does not resolve, and
// the Graph write helpers silently no-op while /api/AddUser still reports success, so guard the
// submit rather than letting it appear to succeed while creating nothing.
const isAllTenants =
!userSettingsDefaults?.currentTenant ||
userSettingsDefaults.currentTenant === "AllTenants";

const formControl = useForm({
mode: "onChange",
defaultValues: {
Expand Down Expand Up @@ -162,7 +169,12 @@ export const CippAddUserDrawer = ({
variant="contained"
color="primary"
onClick={formControl.handleSubmit(handleSubmit)}
disabled={createUser.isPending || !isValid || (!isDirty && !createUser.isSuccess)}
disabled={
isAllTenants ||
createUser.isPending ||
!isValid ||
(!isDirty && !createUser.isSuccess)
}
>
{createUser.isPending
? "Creating User..."
Expand All @@ -178,6 +190,12 @@ export const CippAddUserDrawer = ({
}
>
<Box sx={{ my: 2 }}>
{isAllTenants && (
<Alert severity="warning" sx={{ mb: 2 }}>
User creation is single-tenant only. Select a specific tenant using the tenant
selector before adding a user — with "All Tenants" selected no user will be created.
</Alert>
)}
<CippAddEditUser
key={formResetKey}
formControl={formControl}
Expand Down
3 changes: 3 additions & 0 deletions src/components/CippComponents/CippAuthShell.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,9 @@ export const CippAuthShell = ({
color: 'common.white',
px: { xs: 3, md: 8 },
py: { xs: 2.5, md: 8 },
// The strip is the top of the page: keep the lockup out of the iOS status bar
// on a home-screen install (viewport-fit=cover). 0px everywhere else.
pt: { xs: 'calc(20px + env(safe-area-inset-top, 0px))', md: 8 },
'&::before': {
content: '""',
position: 'absolute',
Expand Down
24 changes: 22 additions & 2 deletions src/components/CippComponents/CippBulkUserDrawer.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useState } from "react";
import { CippIcons } from "../../utils/icon-registry"
import { Button, Link, Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material";
import { Alert, Button, Link, Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material";
import { Grid } from "@mui/system";
import { useForm, useWatch } from "react-hook-form";
import { CippOffCanvas } from "./CippOffCanvas";
Expand All @@ -22,6 +22,12 @@ export const CippBulkUserDrawer = ({
const [addRowDialogOpen, setAddRowDialogOpen] = useState(false);
const initialState = useSettings();

// Bulk user creation targets a single tenant. Under "All Tenants" the tenant does not resolve,
// and the Graph write helpers silently no-op while the endpoint still reports success, so guard
// the submit rather than letting it appear to succeed while creating nothing.
const isAllTenants =
!initialState?.currentTenant || initialState.currentTenant === "AllTenants";

const addedFields = initialState?.defaultAttributes
? initialState.userAttributes.map((item) => item.label)
: [];
Expand Down Expand Up @@ -164,7 +170,12 @@ export const CippBulkUserDrawer = ({
variant="contained"
color="primary"
onClick={handleSubmit}
disabled={createBulkUsers.isLoading || !bulkUserData || bulkUserData.length === 0}
disabled={
isAllTenants ||
createBulkUsers.isLoading ||
!bulkUserData ||
bulkUserData.length === 0
}
>
{createBulkUsers.isLoading
? "Creating Users..."
Expand All @@ -179,6 +190,15 @@ export const CippBulkUserDrawer = ({
}
>
<Grid container spacing={2}>
{isAllTenants && (
<Grid size={{ xs: 12 }}>
<Alert severity="warning">
Bulk user creation is single-tenant only. Select a specific tenant using the tenant
selector before adding users — with "All Tenants" selected no users will be created.
</Alert>
</Grid>
)}

<Grid size={{ md: 6, xs: 12 }}>
<CippFormComponent
type="autoComplete"
Expand Down
Loading
Loading