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",
]}