diff --git a/src/pages/email/administration/contacts/index.js b/src/pages/email/administration/contacts/index.js index d32c9f8a2a6b..a6d7fa23c5fe 100644 --- a/src/pages/email/administration/contacts/index.js +++ b/src/pages/email/administration/contacts/index.js @@ -3,6 +3,7 @@ import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx" import { Edit } from "@mui/icons-material"; import { Button } from "@mui/material"; import Link from "next/link"; +import TrashIcon from '@heroicons/react/24/outline/TrashIcon'; const Page = () => { const pageTitle = "Contacts"; @@ -10,22 +11,23 @@ const Page = () => { const actions = [ { label: "Remove Contact", - type: "POST", + type: "GET", url: "/api/RemoveContact", data: { - TenantFilter: "Tenant", GUID: "id", }, confirmText: "Are you sure you want to delete this contact?", color: "danger", + icon: , }, + /* TODO: Implement edit contact { label: "Edit Contact", link: "/email/administration/edit-contact/[id]", multiPost: false, icon: , color: "warning", - }, + },*/ ]; const simpleColumns = ["displayName", "mail", "companyName", "onPremisesSyncEnabled"]; diff --git a/src/pages/email/administration/quarantine/index.js b/src/pages/email/administration/quarantine/index.js index e784d8888a0e..7415aa9dc5d0 100644 --- a/src/pages/email/administration/quarantine/index.js +++ b/src/pages/email/administration/quarantine/index.js @@ -101,6 +101,7 @@ const Page = () => { }, confirmText: "Are you sure you want to release this message?", icon: , + condition: (row) => row.ReleaseStatus !== "RELEASED", }, { label: "Deny", @@ -112,6 +113,7 @@ const Page = () => { }, confirmText: "Are you sure you want to deny this message?", icon: , + condition: (row) => row.ReleaseStatus !== "DENIED", }, { label: "Release & Allow Sender", @@ -125,6 +127,7 @@ const Page = () => { confirmText: "Are you sure you want to release this email and add the sender to the whitelist?", icon: , + condition: (row) => row.ReleaseStatus !== "RELEASED", }, ]; diff --git a/src/pages/email/administration/tenant-allow-block-lists/index.js b/src/pages/email/administration/tenant-allow-block-lists/index.js index 97925a29f708..508d5c67110e 100644 --- a/src/pages/email/administration/tenant-allow-block-lists/index.js +++ b/src/pages/email/administration/tenant-allow-block-lists/index.js @@ -2,6 +2,7 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js"; import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; import { Button } from "@mui/material"; import Link from "next/link"; +import TrashIcon from '@heroicons/react/24/outline/TrashIcon'; const Page = () => { const pageTitle = "Tenant Allow/Block Lists"; @@ -18,6 +19,7 @@ const Page = () => { }, confirmText: "Are you sure you want to delete?", color: "danger", + icon: , }, ]; diff --git a/src/pages/email/reports/SharedMailboxEnabledAccount/index.js b/src/pages/email/reports/SharedMailboxEnabledAccount/index.js index c72597ef6a25..186556bbe91e 100644 --- a/src/pages/email/reports/SharedMailboxEnabledAccount/index.js +++ b/src/pages/email/reports/SharedMailboxEnabledAccount/index.js @@ -1,5 +1,6 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js"; import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Block } from "@mui/icons-material"; /* NOTE for Devs: @@ -18,10 +19,11 @@ const Page = () => { actions={[ { label: "Block Sign In", - type: "POST", + type: "GET", + icon: , url: "/api/ExecDisableUser", - data: { TenantFilter: "Tenant", ID: "id" }, - confirmText: "Are you sure you want to block this user from signing in?", + data: { ID: "id" }, + confirmText: "Are you sure you want to block the sign-in for this user?", }, ]} offCanvas={{ diff --git a/src/pages/email/reports/antiphishing-filters/index.js b/src/pages/email/reports/antiphishing-filters/index.js index 96a1080d9498..0d3d3d26e736 100644 --- a/src/pages/email/reports/antiphishing-filters/index.js +++ b/src/pages/email/reports/antiphishing-filters/index.js @@ -1,5 +1,6 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js"; import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Block, Check } from "@mui/icons-material"; const Page = () => { const pageTitle = "List of Anti-Phishing Filters"; @@ -8,25 +9,27 @@ const Page = () => { const actions = [ { label: "Enable Rule", - type: "POST", + type: "GET", + icon: , url: "/api/EditAntiPhishingFilter", data: { State: "Enable", - TenantFilter: "TenantFilter", // TenantFilter used in API path as per original file - RuleName: "id", + RuleName: "RuleName", }, confirmText: "Are you sure you want to enable this rule?", + condition: (row) => row.State === "Disabled", }, { label: "Disable Rule", - type: "POST", + type: "GET", + icon: , url: "/api/EditAntiPhishingFilter", data: { State: "Disable", - TenantFilter: "TenantFilter", - RuleName: "id", + RuleName: "RuleName", }, confirmText: "Are you sure you want to disable this rule?", + condition: (row) => row.State === "Enabled", }, // Uncomment the following block if Delete Rule is to be re-enabled in the future /* @@ -35,8 +38,7 @@ const Page = () => { type: "POST", url: "/api/RemoveAntiPhishingFilter", data: { - TenantFilter: "TenantFilter", - RuleName: "id", + RuleName: "RuleName", }, confirmText: "Are you sure you want to delete this rule?", }, diff --git a/src/pages/email/reports/global-address-list/index.js b/src/pages/email/reports/global-address-list/index.js index 5b0be1040072..314fb23f66f0 100644 --- a/src/pages/email/reports/global-address-list/index.js +++ b/src/pages/email/reports/global-address-list/index.js @@ -1,5 +1,6 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js"; import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Visibility, VisibilityOff } from "@mui/icons-material"; const Page = () => { const actions = [ @@ -7,21 +8,25 @@ const Page = () => { label: "Unhide from Global Address List", type: "POST", url: "/api/ExecHideFromGAL", + icon: , data: { HideFromGAL: false, ID: "PrimarySmtpAddress", }, confirmText: "Are you sure you want to show this mailbox in the Global Address List?", + condition: (row) => row.HiddenFromAddressListsEnabled == true, }, { label: "Hide from Global Address List", type: "POST", url: "/api/ExecHideFromGAL", + icon: , data: { HideFromGAL: true, ID: "PrimarySmtpAddress", }, confirmText: "Are you sure you want to hide this mailbox from the Global Address List?", + condition: (row) => row.HiddenFromAddressListsEnabled == false, }, ]; diff --git a/src/pages/email/reports/malware-filters/index.js b/src/pages/email/reports/malware-filters/index.js index 4d5ffe472d98..5ede0778ed93 100644 --- a/src/pages/email/reports/malware-filters/index.js +++ b/src/pages/email/reports/malware-filters/index.js @@ -1,5 +1,6 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js"; import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Block, Check } from "@mui/icons-material"; const Page = () => { return ( @@ -9,25 +10,27 @@ const Page = () => { actions={[ { label: "Enable Rule", - type: "POST", + type: "GET", + icon: , url: "/api/EditMalwareFilter", data: { State: "Enable", - TenantFilter: "tenant.defaultDomainName", - RuleName: "row.RuleName", + RuleName: "RuleName", }, confirmText: "Are you sure you want to enable this rule?", + condition: (row) => row.State === "Disabled", }, { label: "Disable Rule", - type: "POST", + type: "GET", + icon: , url: "/api/EditMalwareFilter", data: { State: "Disable", - TenantFilter: "tenant.defaultDomainName", - RuleName: "row.RuleName", + RuleName: "RuleName", }, confirmText: "Are you sure you want to disable this rule?", + condition: (row) => row.State === "Enabled", }, /* Uncomment and add additional actions if required by future specs { @@ -35,8 +38,7 @@ const Page = () => { type: "POST", url: "/api/RemoveMalwareFilter", data: { - TenantFilter: "tenant.defaultDomainName", - RuleName: "row.RuleName", + RuleName: "RuleName", }, confirmText: "Are you sure you want to delete this rule?", }, diff --git a/src/pages/email/reports/safeattachments-filters/index.js b/src/pages/email/reports/safeattachments-filters/index.js index b61ac47207bc..11e15a1bdea7 100644 --- a/src/pages/email/reports/safeattachments-filters/index.js +++ b/src/pages/email/reports/safeattachments-filters/index.js @@ -1,5 +1,6 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js"; import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Block, Check } from "@mui/icons-material"; const Page = () => { const pageTitle = "List of Safe Attachment Filters"; @@ -9,37 +10,38 @@ const Page = () => { const actions = [ { label: "Enable Rule", - type: "POST", + type: "GET", + icon: , url: "/api/EditSafeAttachmentsFilter", data: { - State: "Enable", - TenantFilter: "tenant.defaultDomainName", // TenantFilter uses default domain name in context - RuleName: "row.RuleName", + State: "!enable", + RuleName: "RuleName", }, confirmText: "Are you sure you want to enable this rule?", color: "info", + condition: (row) => row.State === "Disabled" }, { label: "Disable Rule", - type: "POST", + type: "GET", + icon: , url: "/api/EditSafeAttachmentsFilter", data: { State: "Disable", - TenantFilter: "tenant.defaultDomainName", // TenantFilter uses default domain name in context - RuleName: "row.RuleName", + RuleName: "RuleName", }, confirmText: "Are you sure you want to disable this rule?", color: "info", + condition: (row) => row.State === "Enabled", }, // Commented out "Delete Rule" action from the original file as it was also commented in legacy code /* { label: "Delete Rule", - type: "POST", + type: "GET", url: "/api/RemoveSafeAttachmentsFilter", data: { - TenantFilter: "tenant.defaultDomainName", - RuleName: "row.RuleName", + RuleName: "RuleName", }, confirmText: "Are you sure you want to delete this rule?", color: "danger", diff --git a/src/pages/email/reports/safelinks-filters/index.js b/src/pages/email/reports/safelinks-filters/index.js index 7d2bf1ad5a37..bee1985d9745 100644 --- a/src/pages/email/reports/safelinks-filters/index.js +++ b/src/pages/email/reports/safelinks-filters/index.js @@ -1,5 +1,6 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js"; import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Block, Check } from "@mui/icons-material"; /* Note: Tenant information is passed directly in apiData instead of using Redux (e.g., useSelector) */ /* Original file included a "Delete Rule" action. If needed, add back by following other action formats. */ @@ -7,74 +8,82 @@ import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx" /* Removed custom formatters and FontAwesome imports, as table formatting is handled by CippTablePage */ const Page = () => { + const pageTitle = "List of Safe Link Filters"; + const apiUrl = "/api/ListSafeLinksFilters"; + + const actions = [ + { + label: "Enable Rule", + type: "GET", + icon: , + url: "/api/EditSafeLinksFilter", + data: { + State: "Enable", + RuleName: "RuleName", + }, + confirmText: "Are you sure you want to enable this rule?", + color: "info", + condition: (row) => row.State === "Disabled", + }, + { + label: "Disable Rule", + type: "GET", + icon: , + url: "/api/EditSafeLinksFilter", + data: { + State: "Disable", + RuleName: "RuleName", + }, + confirmText: "Are you sure you want to disable this rule?", + color: "info", + condition: (row) => row.State === "Enabled", + }, + /* TODO: implement Delete Rule action + { + label: "Delete Rule", + type: "GET", + url: "/api/EditSafeLinksFilter", + data: { + RuleName: "RuleName", + }, + confirmText: "Are you sure you want to delete this rule?", + color: "danger", + }, + */ + ]; + + const offCanvas = { + extendedInfoFields: ["RuleName", "Name", "State", "WhenCreated", "WhenChanged"], + actions: actions, // Attaching actions to offCanvas per original design + }; + + const simpleColumns = [ + "RuleName", + "Name", + "State", + "Priority", + "RecipientDomainIs", + "EnableSafeLinksForEmail", + "EnableSafeLinksForTeams", + "EnableSafeLinksForOffice", + "TrackClicks", + "ScanUrls", + "EnableForInternalSenders", + "DeliverMessageAfterScan", + "AllowClickThrough", + "DisableUrlRewrite", + "EnableOrganizationBranding", + "WhenCreated", + "WhenChanged", + ]; + return ( ); }; diff --git a/src/pages/email/spamfilter/list-spamfilter/index.js b/src/pages/email/spamfilter/list-spamfilter/index.js index 062f9e71dc87..e3c017d1cdbd 100644 --- a/src/pages/email/spamfilter/list-spamfilter/index.js +++ b/src/pages/email/spamfilter/list-spamfilter/index.js @@ -1,15 +1,19 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js"; import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; import { Button } from "@mui/material"; +import { Book, Block, Check } from "@mui/icons-material"; +import { TrashIcon } from "@heroicons/react/24/outline"; import Link from "next/link"; const Page = () => { const pageTitle = "Spam Filters"; + const apiUrl = "/api/ListSpamfilter" const actions = [ { label: "Create template based on rule", type: "POST", + icon: , url: "/api/AddSpamfilterTemplate", dataFunction: (data) => { return { ...data }; @@ -18,32 +22,34 @@ const Page = () => { }, { label: "Enable Rule", - type: "POST", + type: "GET", + icon: , url: "/api/EditSpamfilter", data: { State: "enable", - TenantFilter: "Tenant", name: "Name", }, confirmText: "Are you sure you want to enable this rule?", + condition: (row) => row.ruleState === "Disabled", }, { label: "Disable Rule", - type: "POST", + type: "GET", + icon: , url: "/api/EditSpamfilter", data: { State: "disable", - TenantFilter: "Tenant", name: "Name", }, confirmText: "Are you sure you want to disable this rule?", + condition: (row) => row.ruleState === "Enabled", }, { label: "Delete Rule", - type: "POST", + type: "GET", + icon: , url: "/api/RemoveSpamFilter", data: { - TenantFilter: "Tenant", name: "Name", }, confirmText: "Are you sure you want to delete this rule?", @@ -88,7 +94,7 @@ const Page = () => { return ( { const pageTitle = "Deleted Items"; @@ -8,8 +9,9 @@ const Page = () => { { label: "Restore Object", type: "GET", + icon: , url: "/api/ExecRestoreDeleted", - data: { TenantFilter: "Tenant", ID: "id" }, + data: { ID: "id" }, confirmText: "Are you sure you want to restore this user?", multiPost: false, }, diff --git a/src/pages/teams-share/teams/list-team/index.js b/src/pages/teams-share/teams/list-team/index.js index db874b1091da..b1a41a9adbb6 100644 --- a/src/pages/teams-share/teams/list-team/index.js +++ b/src/pages/teams-share/teams/list-team/index.js @@ -2,6 +2,7 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js"; import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; import { Button } from "@mui/material"; import Link from "next/link"; +import { Edit } from "@mui/icons-material"; const Page = () => { const pageTitle = "Teams"; @@ -12,6 +13,7 @@ const Page = () => { link: "/identity/administration/groups/edit?groupId=[id]", multiPost: false, color: "warning", + icon: , }, ]; diff --git a/src/pages/tenant/conditional/list-named-locations/index.js b/src/pages/tenant/conditional/list-named-locations/index.js index 877d38a6411b..2f72a57d5325 100644 --- a/src/pages/tenant/conditional/list-named-locations/index.js +++ b/src/pages/tenant/conditional/list-named-locations/index.js @@ -2,6 +2,7 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js"; import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; import { Button } from "@mui/material"; import Link from "next/link"; +import { MinusIcon, PlusIcon } from "@heroicons/react/24/outline"; const Page = () => { const pageTitle = "Named Locations"; @@ -11,51 +12,58 @@ const Page = () => { label: "Add location to named location", type: "GET", url: "/api/ExecNamedLocation", + icon: , data: { namedLocationId: "id", change: "addLocation", }, fields: [{ type: "textField", name: "input", label: "Country Code" }], confirmText: "Enter a two-letter country code, e.g., US.", + condition: (row) => row["@odata.type"] == "#microsoft.graph.countryNamedLocation", }, { label: "Remove location from named location", type: "POST", url: "/api/ExecNamedLocation", + icon: , data: { namedLocationId: "id", change: "removeLocation", }, fields: [{ type: "textField", name: "input", label: "Country Code" }], confirmText: "Enter a two-letter country code, e.g., US.", + condition: (row) => row["@odata.type"] == "#microsoft.graph.countryNamedLocation", }, { label: "Add IP to named location", type: "POST", url: "/api/ExecNamedLocation", + icon: , data: { namedLocationId: "id", change: "addIp", }, fields: [{ type: "textField", name: "input", label: "IP" }], confirmText: "Enter an IP in CIDR format, e.g., 1.1.1.1/32.", + condition: (row) => row["@odata.type"] == "#microsoft.graph.ipNamedLocation", }, { label: "Remove IP from named location", type: "POST", url: "/api/ExecNamedLocation", + icon: , data: { namedLocationId: "id", change: "removeIp", }, fields: [{ type: "textField", name: "input", label: "IP" }], - confirmText: "Enter an IP in CIDR format, e.g., 1.1.1.1/32.", + condition: (row) => row["@odata.type"] == "#microsoft.graph.ipNamedLocation", }, ]; const offCanvas = { - extendedInfoFields: ["displayName", "type", "rangeOrLocation"], + extendedInfoFields: ["displayName", "rangeOrLocation"], actions: actions, }; @@ -75,7 +83,7 @@ const Page = () => { simpleColumns={[ "displayName", "includeUnknownCountriesAndRegions", - "type", + "isTrusted", "rangeOrLocation", "modifiedDateTime", ]}