@@ -49,6 +59,7 @@ export const RoutingPeersActionCell = ({ router }: Props) => {
deleteRouter(network, router);
}}
variant={"danger"}
+ disabled={!permission.networks.delete}
>
diff --git a/src/modules/networks/routing-peers/RoutingPeersEnabledCell.tsx b/src/modules/networks/routing-peers/RoutingPeersEnabledCell.tsx
index debd592..23f1582 100644
--- a/src/modules/networks/routing-peers/RoutingPeersEnabledCell.tsx
+++ b/src/modules/networks/routing-peers/RoutingPeersEnabledCell.tsx
@@ -4,6 +4,7 @@ import { useApiCall } from "@utils/api";
import * as React from "react";
import { useMemo } from "react";
import { useSWRConfig } from "swr";
+import { usePermissions } from "@/contexts/PermissionsProvider";
import { NetworkRouter } from "@/interfaces/Network";
import { useNetworksContext } from "@/modules/networks/NetworkProvider";
@@ -11,6 +12,7 @@ type Props = {
router: NetworkRouter;
};
export const RoutingPeersEnabledCell = ({ router }: Props) => {
+ const { permission } = usePermissions();
const { mutate } = useSWRConfig();
const { network } = useNetworksContext();
@@ -42,6 +44,7 @@ export const RoutingPeersEnabledCell = ({ router }: Props) => {
checked={isChecked}
size={"small"}
onClick={() => toggle(!isChecked)}
+ disabled={!permission.networks.update}
/>
);
diff --git a/src/modules/networks/routing-peers/RoutingPeersMasqueradeCell.tsx b/src/modules/networks/routing-peers/RoutingPeersMasqueradeCell.tsx
index 40de45d..632c5b2 100644
--- a/src/modules/networks/routing-peers/RoutingPeersMasqueradeCell.tsx
+++ b/src/modules/networks/routing-peers/RoutingPeersMasqueradeCell.tsx
@@ -5,6 +5,7 @@ import useFetchApi, { useApiCall } from "@utils/api";
import * as React from "react";
import { useMemo } from "react";
import { useSWRConfig } from "swr";
+import { usePermissions } from "@/contexts/PermissionsProvider";
import { NetworkRouter } from "@/interfaces/Network";
import { OperatingSystem } from "@/interfaces/OperatingSystem";
import type { Peer } from "@/interfaces/Peer";
@@ -15,6 +16,7 @@ type Props = {
router: NetworkRouter;
};
export const RoutingPeersMasqueradeCell = ({ router }: Props) => {
+ const { permission } = usePermissions();
const { mutate } = useSWRConfig();
const { network } = useNetworksContext();
@@ -55,7 +57,9 @@ export const RoutingPeersMasqueradeCell = ({ router }: Props) => {
}, [router]);
const isToggleDisabled =
- isLoading || (isRoutingPeer && isNonLinuxRoutingPeer);
+ isLoading ||
+ (isRoutingPeer && isNonLinuxRoutingPeer) ||
+ !permission.networks.update;
return (
diff --git a/src/modules/networks/table/NetworkActionCell.tsx b/src/modules/networks/table/NetworkActionCell.tsx
index fb70647..5bac5d3 100644
--- a/src/modules/networks/table/NetworkActionCell.tsx
+++ b/src/modules/networks/table/NetworkActionCell.tsx
@@ -9,6 +9,7 @@ import {
import { EyeIcon, MoreVertical, PencilLineIcon, Trash2 } from "lucide-react";
import { useRouter } from "next/navigation";
import * as React from "react";
+import { usePermissions } from "@/contexts/PermissionsProvider";
import { Network } from "@/interfaces/Network";
import { useNetworksContext } from "@/modules/networks/NetworkProvider";
@@ -16,6 +17,7 @@ type Props = {
network: Network;
};
export default function NetworkActionCell({ network }: Props) {
+ const { permission } = usePermissions();
const { deleteNetwork, openEditNetworkModal } = useNetworksContext();
const router = useRouter();
@@ -42,7 +44,10 @@ export default function NetworkActionCell({ network }: Props) {
View Details
-
openEditNetworkModal(network)}>
+ openEditNetworkModal(network)}
+ disabled={!permission.networks.update}
+ >
Rename
@@ -54,6 +59,7 @@ export default function NetworkActionCell({ network }: Props) {
deleteNetwork(network)}
variant={"danger"}
+ disabled={!permission.networks.delete}
>
diff --git a/src/modules/networks/table/NetworkPolicyCell.tsx b/src/modules/networks/table/NetworkPolicyCell.tsx
index 92d6c64..c910165 100644
--- a/src/modules/networks/table/NetworkPolicyCell.tsx
+++ b/src/modules/networks/table/NetworkPolicyCell.tsx
@@ -3,6 +3,7 @@ import Button from "@components/Button";
import { PlusCircle, ShieldIcon } from "lucide-react";
import { useRouter } from "next/navigation";
import * as React from "react";
+import { usePermissions } from "@/contexts/PermissionsProvider";
import { Network } from "@/interfaces/Network";
import { useNetworksContext } from "@/modules/networks/NetworkProvider";
@@ -11,6 +12,8 @@ type Props = {
};
export const NetworkPolicyCell = ({ network }: Props) => {
+ const { permission } = usePermissions();
+
const { openPolicyModal } = useNetworksContext();
const router = useRouter();
@@ -35,6 +38,7 @@ export const NetworkPolicyCell = ({ network }: Props) => {
variant={"secondary"}
className={"min-w-[130px]"}
onClick={() => openPolicyModal(network)}
+ disabled={!permission.networks.update}
>
Add Policy
diff --git a/src/modules/networks/table/NetworkResourceCell.tsx b/src/modules/networks/table/NetworkResourceCell.tsx
index 2d3cea8..ffb28ce 100644
--- a/src/modules/networks/table/NetworkResourceCell.tsx
+++ b/src/modules/networks/table/NetworkResourceCell.tsx
@@ -3,6 +3,7 @@ import Button from "@components/Button";
import { LayersIcon, PlusCircle } from "lucide-react";
import { useRouter } from "next/navigation";
import * as React from "react";
+import { usePermissions } from "@/contexts/PermissionsProvider";
import { Network } from "@/interfaces/Network";
import { useNetworksContext } from "@/modules/networks/NetworkProvider";
@@ -11,6 +12,8 @@ type Props = {
};
export const NetworkResourceCell = ({ network }: Props) => {
+ const { permission } = usePermissions();
+
const { openResourceModal } = useNetworksContext();
const router = useRouter();
@@ -35,6 +38,7 @@ export const NetworkResourceCell = ({ network }: Props) => {
variant={"secondary"}
className={"min-w-[130px]"}
onClick={() => openResourceModal(network)}
+ disabled={!permission.networks.update}
>
Add Resource
diff --git a/src/modules/networks/table/NetworkRoutingPeerCell.tsx b/src/modules/networks/table/NetworkRoutingPeerCell.tsx
index c2ab7b1..ef87fb2 100644
--- a/src/modules/networks/table/NetworkRoutingPeerCell.tsx
+++ b/src/modules/networks/table/NetworkRoutingPeerCell.tsx
@@ -6,6 +6,7 @@ import { HelpCircle, PlusCircle } from "lucide-react";
import { useRouter } from "next/navigation";
import * as React from "react";
import { useMemo } from "react";
+import { usePermissions } from "@/contexts/PermissionsProvider";
import { Network } from "@/interfaces/Network";
import { useNetworksContext } from "@/modules/networks/NetworkProvider";
@@ -13,6 +14,7 @@ type Props = {
network: Network;
};
export default function NetworkRoutingPeerCell({ network }: Props) {
+ const { permission } = usePermissions();
const router = useRouter();
const disabledText = useMemo(
() => (
@@ -99,6 +101,7 @@ export default function NetworkRoutingPeerCell({ network }: Props) {
variant={"secondary"}
className={"min-w-[130px]"}
onClick={() => openAddRoutingPeerModal(network)}
+ disabled={!permission.networks.update}
>
Add Routing Peer
diff --git a/src/modules/networks/table/NetworksTable.tsx b/src/modules/networks/table/NetworksTable.tsx
index 86425be..2c523dc 100644
--- a/src/modules/networks/table/NetworksTable.tsx
+++ b/src/modules/networks/table/NetworksTable.tsx
@@ -13,6 +13,7 @@ import { usePathname } from "next/navigation";
import React from "react";
import { useSWRConfig } from "swr";
import NetworkRoutesIcon from "@/assets/icons/NetworkRoutesIcon";
+import { usePermissions } from "@/contexts/PermissionsProvider";
import { useLocalStorage } from "@/hooks/useLocalStorage";
import { Network } from "@/interfaces/Network";
import {
@@ -167,9 +168,15 @@ export default function NetworksTable({
}
const AddNetworkButton = () => {
+ const { permission } = usePermissions();
+
const { openCreateNetworkModal } = useNetworksContext();
return (
-