diff --git a/public/version.json b/public/version.json index afe1c8c5194e..25841539a54b 100644 --- a/public/version.json +++ b/public/version.json @@ -1,3 +1,3 @@ { - "version": "7.0.3" + "version": "7.0.4" } diff --git a/src/components/CippComponents/CippFormLicenseSelector.jsx b/src/components/CippComponents/CippFormLicenseSelector.jsx index 6a952fe124aa..e435c1b467e1 100644 --- a/src/components/CippComponents/CippFormLicenseSelector.jsx +++ b/src/components/CippComponents/CippFormLicenseSelector.jsx @@ -1,7 +1,7 @@ import React from "react"; import { CippFormComponent } from "./CippFormComponent"; -import { useWatch } from "react-hook-form"; import { getCippLicenseTranslation } from "../../utils/get-cipp-license-translation"; +import { useSettings } from "../../hooks/use-settings"; export const CippFormLicenseSelector = ({ formControl, @@ -12,7 +12,7 @@ export const CippFormLicenseSelector = ({ addedField, ...other }) => { - const currentTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); + const userSettingsDefaults = useSettings(); return ( @@ -30,7 +31,7 @@ export const CippFormLicenseSelector = ({ option.prepaidUnits.enabled - option.consumedUnits } available)`, valueField: "skuId", - queryKey: `ListLicenses-${currentTenant?.value}`, + queryKey: `ListLicenses-${userSettingsDefaults.currentTenant ?? undefined}`, data: { Endpoint: "subscribedSkus", $count: true, diff --git a/src/components/CippComponents/CippTenantSelector.jsx b/src/components/CippComponents/CippTenantSelector.jsx index aad7d30889fd..4471a2442415 100644 --- a/src/components/CippComponents/CippTenantSelector.jsx +++ b/src/components/CippComponents/CippTenantSelector.jsx @@ -217,7 +217,7 @@ export const CippTenantSelector = (props) => { icon: , }, { - label: "Sharepoint Portal", + label: "SharePoint Portal", link: `https://admin.microsoft.com/Partner/beginclientsession.aspx?CTID=${currentTenant?.addedFields?.customerId}&CSDEST=SharePoint`, icon: , }, diff --git a/src/components/CippComponents/CippTranslations.jsx b/src/components/CippComponents/CippTranslations.jsx index 32c4bd9dd6eb..dade5cfd0d6b 100644 --- a/src/components/CippComponents/CippTranslations.jsx +++ b/src/components/CippComponents/CippTranslations.jsx @@ -35,7 +35,7 @@ export const CippTranslations = { portal_intune: "Intune Portal", portal_security: "Security Portal", portal_compliance: "Compliance Portal", - portal_sharepoint: "Sharepoint Portal", + portal_sharepoint: "SharePoint Portal", "@odata.type": "Type", roleDefinitionId: "GDAP Role", FromIP: "From IP", diff --git a/src/components/CippFormPages/CippAddEditUser.jsx b/src/components/CippFormPages/CippAddEditUser.jsx index a813ae2ed0d9..991ade01854a 100644 --- a/src/components/CippFormPages/CippAddEditUser.jsx +++ b/src/components/CippFormPages/CippAddEditUser.jsx @@ -249,6 +249,15 @@ const CippAddEditUser = (props) => { formControl={formControl} /> + + + {userSettingsDefaults?.userAttributes?.map((attribute, idx) => ( { actions={actions} offCanvas={offCanvas} simpleColumns={columns} + filters={[ + { + filterName: "Included tenants", + //true or false filters by yes/no + value: [{ id: "Excluded", value: "No" }], + type: "column", + }, + { + filterName: "Excluded tenants", + value: [{ id: "Excluded", value: "Yes" }], + type: "column", + }, + ]} /> { apiData={{ Endpoint: "deviceAppManagement/managedAppPolicies", $orderby: "displayName", + manualPagination: true, }} apiDataKey="Results" actions={actions} diff --git a/src/pages/endpoint/MEM/list-compliance-policies/index.js b/src/pages/endpoint/MEM/list-compliance-policies/index.js index 35d35832ffea..51eb0354d5f9 100644 --- a/src/pages/endpoint/MEM/list-compliance-policies/index.js +++ b/src/pages/endpoint/MEM/list-compliance-policies/index.js @@ -9,12 +9,11 @@ const Page = () => { const actions = [ { label: "Create template based on policy", - type: "POST", + type: "GET", url: "/api/AddIntuneTemplate", data: { - TenantFilter: "Tenant", ID: "id", - URLName: "deviceCompliancePolicies", + URLName: "URLName", }, confirmText: "Are you sure you want to create a template based on this policy?", icon: , @@ -22,11 +21,10 @@ const Page = () => { }, { label: "Assign to All Users", - type: "POST", + type: "GET", url: "/api/ExecAssignPolicy", data: { AssignTo: "allLicensedUsers", - TenantFilter: "Tenant", ID: "id", type: "deviceCompliancePolicies", }, @@ -36,11 +34,10 @@ const Page = () => { }, { label: "Assign to All Devices", - type: "POST", + type: "GET", url: "/api/ExecAssignPolicy", data: { AssignTo: "AllDevices", - TenantFilter: "Tenant", ID: "id", type: "deviceCompliancePolicies", }, @@ -50,11 +47,10 @@ const Page = () => { }, { label: "Assign Globally (All Users / All Devices)", - type: "POST", + type: "GET", url: "/api/ExecAssignPolicy", data: { AssignTo: "AllDevicesAndUsers", - TenantFilter: "Tenant", ID: "id", type: "deviceCompliancePolicies", }, @@ -64,10 +60,9 @@ const Page = () => { }, { label: "Delete Policy", - type: "POST", + type: "GET", url: "/api/RemovePolicy", data: { - TenantFilter: "Tenant", ID: "id", URLName: "deviceCompliancePolicies", }, @@ -99,6 +94,7 @@ const Page = () => { $orderby: "displayName", $count: true, $expand: "assignments", + manualPagination: true, }} actions={actions} offCanvas={offCanvas} diff --git a/src/pages/endpoint/autopilot/list-devices/index.js b/src/pages/endpoint/autopilot/list-devices/index.js index a913807cb792..b738be0ba6af 100644 --- a/src/pages/endpoint/autopilot/list-devices/index.js +++ b/src/pages/endpoint/autopilot/list-devices/index.js @@ -12,29 +12,35 @@ const Page = () => { type: "POST", url: "/api/ExecAssignAPDevice", data: { - TenantFilter: "Tenant", - userid: "id", - message: "message", - Device: "id", + device: "id", + serialNumber: "serialNumber", }, - confirmText: "Select the user to assign", - modalDropdown: { - url: "/api/listUsers", - labelField: "userPrincipalName", - valueField: "id", - addedField: { - userPrincipalName: "userPrincipalName", - addressableUserName: "displayName", - groupName: "displayName", + confirmText: "Select the user to assign the device to", + fields: [ + { + type: "autoComplete", + name: "user", + label: "Select User", + multiple: false, + creatable: false, + api: { + url: "/api/listUsers", + labelField: (user) => `${user.displayName} (${user.userPrincipalName})`, + valueField: "userPrincipalName", + addedField: { + userPrincipalName: "userPrincipalName", + addressableUserName: "displayName", + }, + }, }, - }, + ], color: "info", }, { label: "Delete Device", type: "POST", url: "/api/RemoveAPDevice", - data: { ID: "id", tenantFilter: "Tenant" }, + data: { ID: "id" }, confirmText: "Are you sure you want to delete this device?", color: "danger", }, diff --git a/src/pages/endpoint/reports/devices/index.js b/src/pages/endpoint/reports/devices/index.js index 49720d101722..4bce06237a4c 100644 --- a/src/pages/endpoint/reports/devices/index.js +++ b/src/pages/endpoint/reports/devices/index.js @@ -10,7 +10,6 @@ const Page = () => { type: "POST", url: "/api/ExecDeviceAction", data: { - TenantFilter: "TenantFilter", GUID: "id", Action: "syncDevice", }, @@ -21,7 +20,6 @@ const Page = () => { type: "POST", url: "/api/ExecDeviceAction", data: { - TenantFilter: "TenantFilter", GUID: "id", Action: "rebootNow", }, @@ -32,7 +30,6 @@ const Page = () => { type: "POST", url: "/api/ExecDeviceAction", data: { - TenantFilter: "TenantFilter", GUID: "id", Action: "locateDevice", }, @@ -43,7 +40,6 @@ const Page = () => { type: "POST", url: "/api/ExecGetLocalAdminPassword", data: { - TenantFilter: "TenantFilter", GUID: "azureADDeviceId", }, confirmText: "Are you sure you want to retrieve the local admin password?", @@ -53,7 +49,6 @@ const Page = () => { type: "POST", url: "/api/ExecDeviceAction", data: { - TenantFilter: "TenantFilter", GUID: "id", Action: "RotateLocalAdminPassword", }, @@ -64,7 +59,6 @@ const Page = () => { type: "POST", url: "/api/ExecGetRecoveryKey", data: { - TenantFilter: "TenantFilter", GUID: "azureADDeviceId", }, confirmText: "Are you sure you want to retrieve the Bitlocker keys?", @@ -74,7 +68,6 @@ const Page = () => { type: "POST", url: "/api/ExecDeviceAction", data: { - TenantFilter: "TenantFilter", GUID: "id", Action: "WindowsDefenderScan", quickScan: false, @@ -86,7 +79,6 @@ const Page = () => { type: "POST", url: "/api/ExecDeviceAction", data: { - TenantFilter: "TenantFilter", GUID: "id", Action: "WindowsDefenderScan", quickScan: true, @@ -98,7 +90,6 @@ const Page = () => { type: "POST", url: "/api/ExecDeviceAction", data: { - TenantFilter: "TenantFilter", GUID: "id", Action: "windowsDefenderUpdateSignatures", }, diff --git a/src/pages/identity/administration/deleted-items/index.js b/src/pages/identity/administration/deleted-items/index.js index 8b6d93120a3f..ab568cfb92d9 100644 --- a/src/pages/identity/administration/deleted-items/index.js +++ b/src/pages/identity/administration/deleted-items/index.js @@ -7,7 +7,7 @@ const Page = () => { const actions = [ { label: "Restore Object", - type: "POST", + type: "GET", url: "/api/ExecRestoreDeleted", data: { TenantFilter: "Tenant", ID: "id" }, confirmText: "Are you sure you want to restore this user?", @@ -46,7 +46,6 @@ const Page = () => { { type: "GET", url: "/api/ExecDeviceDelete", data: { - ID: "ID", - Action: "Enable", + ID: "id", + Action: "!Enable", }, confirmText: "Are you sure you want to enable this device?", multiPost: false, @@ -21,8 +21,8 @@ const Page = () => { type: "GET", url: "/api/ExecDeviceDelete", data: { - ID: "ID", - Action: "Disable", + ID: "id", + Action: "!Disable", }, confirmText: "Are you sure you want to disable this device?", multiPost: false, @@ -32,7 +32,7 @@ const Page = () => { type: "GET", url: "/api/ExecGetRecoveryKey", data: { - GUID: "ID", + GUID: "id", }, confirmText: "Are you sure you want to retrieve the Bitlocker keys?", multiPost: false, @@ -42,8 +42,8 @@ const Page = () => { type: "GET", url: "/api/ExecDeviceDelete", data: { - ID: "ID", - Action: "Delete", + ID: "id", + Action: "!Delete", }, confirmText: "Are you sure you want to delete this device?", multiPost: false, diff --git a/src/pages/identity/administration/groups/edit.jsx b/src/pages/identity/administration/groups/edit.jsx index 32392fb15d1c..65df31bfa199 100644 --- a/src/pages/identity/administration/groups/edit.jsx +++ b/src/pages/identity/administration/groups/edit.jsx @@ -91,7 +91,7 @@ const EditGroup = () => { { name="expireAction" multiple={false} options={[ - { label: "Delete User", value: "delete" }, - { label: "Disable User", value: "disable" }, - { label: "Remove Roles", value: "removeRoles" }, + { label: "Delete User", value: "DeleteUser" }, + { label: "Disable User", value: "DisableUser" }, + { label: "Remove Roles", value: "RemoveRoles" }, ]} formControl={formControl} /> diff --git a/src/pages/identity/administration/risky-users/index.js b/src/pages/identity/administration/risky-users/index.js index 1738f1ab4f2b..c235ed4e2b2f 100644 --- a/src/pages/identity/administration/risky-users/index.js +++ b/src/pages/identity/administration/risky-users/index.js @@ -9,7 +9,7 @@ const Page = () => { const actions = [ { label: "Dismiss Risk", - type: "POST", + type: "GET", icon: , url: "/api/ExecDismissRiskyUser", data: { userId: "id", userDisplayName: "userDisplayName" }, diff --git a/src/pages/identity/administration/users/index.js b/src/pages/identity/administration/users/index.js index 8fd4bc8ac24a..0c3c6c773375 100644 --- a/src/pages/identity/administration/users/index.js +++ b/src/pages/identity/administration/users/index.js @@ -68,7 +68,7 @@ const Page = () => { }, { //tested - label: "Rerequire MFA registration", + label: "Re-require MFA registration", type: "GET", icon: , url: "/api/ExecResetMFA", @@ -322,6 +322,7 @@ const Page = () => { "department", // Department "onPremisesLastSyncDateTime", // OnPrem Last Sync "id", // Unique ID + "otherMails", // Alternate Email Addresses ], actions: actions, }; diff --git a/src/pages/identity/reports/risk-detections/index.js b/src/pages/identity/reports/risk-detections/index.js index 54435ebcc6ae..f6e634d0034c 100644 --- a/src/pages/identity/reports/risk-detections/index.js +++ b/src/pages/identity/reports/risk-detections/index.js @@ -68,6 +68,7 @@ const Page = () => { Endpoint: "identityProtection/riskDetections", manualPagination: true, $count: true, + $orderby: "detectedDateTime desc", $top: 500, }} apiDataKey="Results" diff --git a/src/pages/tenant/gdap-management/roles/index.js b/src/pages/tenant/gdap-management/roles/index.js index fbe8b3c7670c..2de5ad32b096 100644 --- a/src/pages/tenant/gdap-management/roles/index.js +++ b/src/pages/tenant/gdap-management/roles/index.js @@ -41,9 +41,12 @@ const actions = [ { label: "Delete Mapping", icon: , - modal: true, - modalUrl: "/api/ExecDeleteGDAPRoleMapping?&GroupId=[GroupId]", - modalMessage: + type: "POST", + url: "/api/ExecDeleteGDAPRoleMapping", + data: { + GroupId: "GroupId", + }, + confirmText: "Are you sure you want to delete this role mapping? (Note: This does not delete the associated security groups or modify any GDAP relationships.)", }, ]; diff --git a/staticwebapp.config.json b/staticwebapp.config.json index 6611de2c5341..e82c3b401e9e 100644 --- a/staticwebapp.config.json +++ b/staticwebapp.config.json @@ -7,7 +7,7 @@ } }, { - "route": "*.{png,jpg,gif,json,xml,ico,css,js}", + "route": "*.{png,jpg,gif,xml,ico,css,js}", "headers": { "cache-control": "must-revalidate, max-age=15770000" } @@ -39,7 +39,11 @@ "allowedRoles": ["admin", "editor", "readonly", "authenticated", "anonymous"] }, { - "route": "/api/AddStandardsDeploy", + "route": "/api/AddStandardTemplate", + "allowedRoles": ["admin"] + }, + { + "route": "/api/RemoveStandardTemplate", "allowedRoles": ["admin"] }, {