Skip to content

Commit e02895a

Browse files
Merge pull request KelvinTegelaar#6369 from KelvinTegelaar/dev
Dev to hf
2 parents 17ed2b3 + cc3903c commit e02895a

8 files changed

Lines changed: 79 additions & 52 deletions

File tree

.github/workflows/Detect_Duplicate_Issues.yml

Lines changed: 0 additions & 24 deletions
This file was deleted.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cipp",
3-
"version": "10.6.1",
3+
"version": "10.6.3",
44
"author": "CIPP Contributors",
55
"homepage": "https://cipp.app/",
66
"bugs": {

public/version.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"version": "10.6.1"
2+
"version": "10.6.3"
33
}

src/components/CippComponents/CippIntunePolicyActions.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export const useCippIntunePolicyActions = (tenant, policyType, options = {}) =>
8888
name: 'assignmentMode',
8989
label: 'Assignment mode',
9090
options: assignmentModeOptions,
91-
defaultValue: 'replace',
91+
defaultValue: 'append',
9292
// Re-validate the Custom Group picker (no-op for broad actions, which have no groupTargets).
9393
validators: { deps: ['groupTargets'] },
9494
helperText:
@@ -147,7 +147,7 @@ export const useCippIntunePolicyActions = (tenant, policyType, options = {}) =>
147147
validate: (value, formValues) => {
148148
if (
149149
formValues?.assignmentDirection === 'exclude' &&
150-
(formValues?.assignmentMode || 'replace') === 'replace'
150+
(formValues?.assignmentMode || 'append') === 'replace'
151151
) {
152152
return true
153153
}
@@ -179,7 +179,7 @@ export const useCippIntunePolicyActions = (tenant, policyType, options = {}) =>
179179
type: item?.URLName || policyType,
180180
...(platformType && { platformType }),
181181
AssignTo: assignTo,
182-
assignmentMode: formData?.assignmentMode || 'replace',
182+
assignmentMode: formData?.assignmentMode || 'append',
183183
ExcludeGroupIds: (formData?.excludeGroupTargets || []).map((g) => g.value).filter(Boolean),
184184
ExcludeGroupNames: (formData?.excludeGroupTargets || []).map((g) => g.label).filter(Boolean),
185185
AssignmentFilterName: formData?.assignmentFilter?.value || null,
@@ -205,7 +205,7 @@ export const useCippIntunePolicyActions = (tenant, policyType, options = {}) =>
205205
ExcludeGroupIds: isExclude ? ids : [],
206206
ExcludeGroupNames: isExclude ? names : [],
207207
assignmentDirection: formData?.assignmentDirection || 'include',
208-
assignmentMode: formData?.assignmentMode || 'replace',
208+
assignmentMode: formData?.assignmentMode || 'append',
209209
AssignmentFilterName: formData?.assignmentFilter?.value || null,
210210
AssignmentFilterType: formData?.assignmentFilter?.value
211211
? formData?.assignmentFilterType || 'include'

src/components/CippFormPages/CippAddEditUser.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -907,7 +907,8 @@ const CippAddEditUser = (props) => {
907907
label: userGroups.DisplayName,
908908
value: userGroups.id,
909909
addedFields: {
910-
groupType: userGroups.calculatedGroupType || userGroups.groupType,
910+
groupType: userGroups.groupType,
911+
calculatedGroupType: userGroups.calculatedGroupType,
911912
},
912913
}))}
913914
creatable={false}

src/data/standards.json

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1371,21 +1371,38 @@
13711371
"cat": "Entra (AAD) Standards",
13721372
"tag": ["SMB1001 (2.5)"],
13731373
"appliesToTest": ["SMB1001_2_5", "ZTNA21889"],
1374-
"helpText": "Sets the state of the registration campaign for the tenant",
1375-
"docsDescription": "Sets the state of the registration campaign for the tenant. If enabled nudges users to set up the Microsoft Authenticator during sign-in.",
1374+
"helpText": "Sets the state of the registration campaign for the tenant, including the targeted authentication method, snooze settings and include/exclude groups. Leave include/exclude blank to keep the groups currently configured in the tenant, or use 'AllUsers' to target all users.",
1375+
"docsDescription": "Sets the state of the registration campaign for the tenant. If enabled nudges users to set up the targeted authentication method (Microsoft Authenticator or a Passkey) during sign-in. Supports limiting the number of snoozes, and including or excluding specific groups (by display name).",
13761376
"executiveText": "Prompts employees to set up multi-factor authentication during login, gradually improving the organization's security posture by encouraging adoption of stronger authentication methods. This helps achieve better security compliance without forcing immediate mandatory changes.",
13771377
"addedComponent": [
13781378
{
13791379
"type": "autoComplete",
13801380
"multiple": false,
13811381
"creatable": false,
1382-
"label": "Select value",
1382+
"label": "Registration campaign state",
13831383
"name": "standards.NudgeMFA.state",
13841384
"options": [
13851385
{ "label": "Enabled", "value": "enabled" },
13861386
{ "label": "Disabled", "value": "disabled" }
13871387
]
13881388
},
1389+
{
1390+
"type": "autoComplete",
1391+
"multiple": false,
1392+
"creatable": false,
1393+
"required": false,
1394+
"label": "Authentication method to nudge users to register (default is Microsoft Authenticator)",
1395+
"name": "standards.NudgeMFA.targetedAuthenticationMethod",
1396+
"options": [
1397+
{ "label": "Microsoft Authenticator", "value": "microsoftAuthenticator" },
1398+
{ "label": "Passkey (FIDO2)", "value": "fido2" }
1399+
],
1400+
"condition": {
1401+
"field": "standards.NudgeMFA.state",
1402+
"compareType": "valueEq",
1403+
"compareValue": "enabled"
1404+
}
1405+
},
13891406
{
13901407
"type": "number",
13911408
"name": "standards.NudgeMFA.snoozeDurationInDays",
@@ -1395,6 +1412,39 @@
13951412
"min": { "value": 0, "message": "Minimum value is 0" },
13961413
"max": { "value": 14, "message": "Maximum value is 14" }
13971414
}
1415+
},
1416+
{
1417+
"type": "switch",
1418+
"name": "standards.NudgeMFA.enforceRegistrationAfterAllowedSnoozes",
1419+
"label": "Limited number of snoozes (require registration after 3 snoozes)",
1420+
"defaultValue": true,
1421+
"condition": {
1422+
"field": "standards.NudgeMFA.state",
1423+
"compareType": "valueEq",
1424+
"compareValue": "enabled"
1425+
}
1426+
},
1427+
{
1428+
"type": "textField",
1429+
"name": "standards.NudgeMFA.includeTargets",
1430+
"label": "Include groups (comma separated group names, 'AllUsers' for everyone, blank = keep current targets)",
1431+
"required": false,
1432+
"condition": {
1433+
"field": "standards.NudgeMFA.state",
1434+
"compareType": "valueEq",
1435+
"compareValue": "enabled"
1436+
}
1437+
},
1438+
{
1439+
"type": "textField",
1440+
"name": "standards.NudgeMFA.excludeTargets",
1441+
"label": "Exclude groups (comma separated group names, blank = keep current exclusions)",
1442+
"required": false,
1443+
"condition": {
1444+
"field": "standards.NudgeMFA.state",
1445+
"compareType": "valueEq",
1446+
"compareValue": "enabled"
1447+
}
13981448
}
13991449
],
14001450
"label": "Sets the state for the request to setup Authenticator",
@@ -8044,7 +8094,7 @@
80448094
"tag": ["CIS M365 7.0.0 (5.2.3.8)", "CIS M365 7.0.0 (5.2.3.9)"],
80458095
"appliesToTest": ["CIS_5_2_3_8", "CIS_5_2_3_9"],
80468096
"helpText": "**Requires Entra ID P1.** Configures the Entra ID Smart Lockout settings including lockout duration, lockout threshold, and on-premises integration mode.",
8047-
"docsDescription": "Configures the Entra ID Smart Lockout policy which protects against brute-force password attacks. Smart Lockout locks out bad actors who try to guess user passwords or use brute-force methods. It recognizes sign-ins from valid users and treats them differently from attackers. Settings include lockout duration (seconds), lockout threshold (failed attempts before lockout), and on-premises password protection mode (Audit or Enforced).",
8097+
"docsDescription": "Configures the Entra ID Smart Lockout policy which protects against brute-force password attacks. Smart Lockout locks out bad actors who try to guess user passwords or use brute-force methods. It recognizes sign-ins from valid users and treats them differently from attackers. Settings include lockout duration (seconds), lockout threshold (failed attempts before lockout), and on-premises password protection mode (Audit or Enforce).",
80488098
"addedComponent": [
80498099
{
80508100
"type": "number",
@@ -8071,7 +8121,7 @@
80718121
"label": "On-Premises Mode",
80728122
"options": [
80738123
{ "label": "Audit", "value": "Audit" },
8074-
{ "label": "Enforced", "value": "Enforced" }
8124+
{ "label": "Enforce", "value": "Enforce" }
80758125
]
80768126
}
80778127
],

src/pages/endpoint/MEM/list-scripts/index.jsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ const Page = () => {
238238
name: 'assignmentMode',
239239
label: 'Assignment mode',
240240
options: assignmentModeOptions,
241-
defaultValue: 'replace',
241+
defaultValue: 'append',
242242
helperText:
243243
'Replace will overwrite existing assignments. Append keeps current assignments and adds the new ones.',
244244
},
@@ -249,7 +249,7 @@ const Page = () => {
249249
ID: row?.id,
250250
Type: getScriptEndpoint(row?.scriptType),
251251
AssignTo: 'allLicensedUsers',
252-
assignmentMode: formData?.assignmentMode || 'replace',
252+
assignmentMode: formData?.assignmentMode || 'append',
253253
}),
254254
},
255255
{
@@ -265,7 +265,7 @@ const Page = () => {
265265
name: 'assignmentMode',
266266
label: 'Assignment mode',
267267
options: assignmentModeOptions,
268-
defaultValue: 'replace',
268+
defaultValue: 'append',
269269
helperText:
270270
'Replace will overwrite existing assignments. Append keeps current assignments and adds the new ones.',
271271
},
@@ -276,7 +276,7 @@ const Page = () => {
276276
ID: row?.id,
277277
Type: getScriptEndpoint(row?.scriptType),
278278
AssignTo: 'AllDevices',
279-
assignmentMode: formData?.assignmentMode || 'replace',
279+
assignmentMode: formData?.assignmentMode || 'append',
280280
}),
281281
},
282282
{
@@ -292,7 +292,7 @@ const Page = () => {
292292
name: 'assignmentMode',
293293
label: 'Assignment mode',
294294
options: assignmentModeOptions,
295-
defaultValue: 'replace',
295+
defaultValue: 'append',
296296
helperText:
297297
'Replace will overwrite existing assignments. Append keeps current assignments and adds the new ones.',
298298
},
@@ -303,7 +303,7 @@ const Page = () => {
303303
ID: row?.id,
304304
Type: getScriptEndpoint(row?.scriptType),
305305
AssignTo: 'AllDevicesAndUsers',
306-
assignmentMode: formData?.assignmentMode || 'replace',
306+
assignmentMode: formData?.assignmentMode || 'append',
307307
}),
308308
},
309309
{
@@ -325,7 +325,7 @@ const Page = () => {
325325
validate: (value, formValues) => {
326326
if (
327327
formValues?.assignmentDirection === 'exclude' &&
328-
(formValues?.assignmentMode || 'replace') === 'replace'
328+
(formValues?.assignmentMode || 'append') === 'replace'
329329
) {
330330
return true
331331
}
@@ -352,7 +352,7 @@ const Page = () => {
352352
name: 'assignmentMode',
353353
label: 'Assignment mode',
354354
options: assignmentModeOptions,
355-
defaultValue: 'replace',
355+
defaultValue: 'append',
356356
// Re-validate the picker so the empty-allowed rule updates when mode changes.
357357
validators: { deps: ['groupTargets'] },
358358
helperText:
@@ -373,7 +373,7 @@ const Page = () => {
373373
ExcludeGroupIds: isExclude ? ids : [],
374374
ExcludeGroupNames: isExclude ? names : [],
375375
assignmentDirection: formData?.assignmentDirection || 'include',
376-
assignmentMode: formData?.assignmentMode || 'replace',
376+
assignmentMode: formData?.assignmentMode || 'append',
377377
}
378378
},
379379
},

src/pages/endpoint/applications/list/index.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ const Page = () => {
159159
name: 'assignmentMode',
160160
label: 'Assignment mode',
161161
options: assignmentModeOptions,
162-
defaultValue: 'replace',
162+
defaultValue: 'append',
163163
helperText:
164164
'Replace will overwrite existing assignments. Append keeps current assignments and adds/overwrites only for the selected groups/intents.',
165165
},
@@ -177,7 +177,7 @@ const Page = () => {
177177
customDataformatter: makeAssignFormatter((_singleRow, formData) => ({
178178
AssignTo: 'AllUsers',
179179
Intent: formData?.Intent || 'Required',
180-
assignmentMode: formData?.assignmentMode || 'replace',
180+
assignmentMode: formData?.assignmentMode || 'append',
181181
})),
182182
confirmText: 'Are you sure you want to assign "[displayName]" to all users?',
183183
icon: <UserIcon />,
@@ -192,7 +192,7 @@ const Page = () => {
192192
customDataformatter: makeAssignFormatter((_singleRow, formData) => ({
193193
AssignTo: 'AllDevices',
194194
Intent: formData?.Intent || 'Required',
195-
assignmentMode: formData?.assignmentMode || 'replace',
195+
assignmentMode: formData?.assignmentMode || 'append',
196196
})),
197197
confirmText: 'Are you sure you want to assign "[displayName]" to all devices?',
198198
icon: <LaptopMac />,
@@ -207,7 +207,7 @@ const Page = () => {
207207
customDataformatter: makeAssignFormatter((_singleRow, formData) => ({
208208
AssignTo: 'AllDevicesAndUsers',
209209
Intent: formData?.Intent || 'Required',
210-
assignmentMode: formData?.assignmentMode || 'replace',
210+
assignmentMode: formData?.assignmentMode || 'append',
211211
})),
212212
confirmText: 'Are you sure you want to assign "[displayName]" to all users and devices?',
213213
icon: <GlobeAltIcon />,
@@ -232,7 +232,7 @@ const Page = () => {
232232
validate: (value, formValues) => {
233233
if (
234234
formValues?.assignmentDirection === 'exclude' &&
235-
(formValues?.assignmentMode || 'replace') === 'replace'
235+
(formValues?.assignmentMode || 'append') === 'replace'
236236
) {
237237
return true
238238
}
@@ -269,7 +269,7 @@ const Page = () => {
269269
name: 'assignmentMode',
270270
label: 'Assignment mode',
271271
options: assignmentModeOptions,
272-
defaultValue: 'replace',
272+
defaultValue: 'append',
273273
// Re-validate the picker so the empty-allowed rule updates when mode changes.
274274
validators: { deps: ['groupTargets'] },
275275
helperText:
@@ -290,7 +290,7 @@ const Page = () => {
290290
ExcludeGroupNames: isExclude ? names : [],
291291
assignmentDirection: formData?.assignmentDirection || 'include',
292292
Intent: formData?.assignmentIntent || 'Required',
293-
AssignmentMode: formData?.assignmentMode || 'replace',
293+
AssignmentMode: formData?.assignmentMode || 'append',
294294
}
295295
}),
296296
},

0 commit comments

Comments
 (0)