diff --git a/frontend/src/components/permissions/OrgPermissionCan.tsx b/frontend/src/components/permissions/OrgPermissionCan.tsx
index bbe5bf986..d2e698e88 100644
--- a/frontend/src/components/permissions/OrgPermissionCan.tsx
+++ b/frontend/src/components/permissions/OrgPermissionCan.tsx
@@ -1,26 +1,14 @@
import { FunctionComponent, ReactNode } from "react";
import { BoundCanProps, Can } from "@casl/react";
-import { faLock } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { TOrgPermission, useOrgPermission } from "@app/context/OrgPermissionContext";
-import { Tooltip } from "../v2";
+import { AccessRestrictedBanner, Tooltip } from "../v2";
export const OrgPermissionGuardBanner = () => {
return (
-
-
-
-
-
-
Access Restricted
-
- Your role has limited permissions, please
contact your admin to gain access
-
-
-
+
);
};
diff --git a/frontend/src/components/permissions/PermissionDeniedBanner.tsx b/frontend/src/components/permissions/PermissionDeniedBanner.tsx
index b3c7a4f53..3f86a7257 100644
--- a/frontend/src/components/permissions/PermissionDeniedBanner.tsx
+++ b/frontend/src/components/permissions/PermissionDeniedBanner.tsx
@@ -1,15 +1,12 @@
-import { ReactNode } from "react";
-import { faLock } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { twMerge } from "tailwind-merge";
+import { AccessRestrictedBanner } from "@app/components/v2";
+
type Props = {
containerClassName?: string;
- className?: string;
- children?: ReactNode;
};
-export const PermissionDeniedBanner = ({ containerClassName, className, children }: Props) => {
+export const PermissionDeniedBanner = ({ containerClassName }: Props) => {
return (
-
-
-
-
-
-
-
Access Restricted
- {children || (
-
- Your role has limited permissions, please
contact your administrator to gain
- access
-
- )}
-
-
-
+
);
};
diff --git a/frontend/src/components/permissions/ProjectPermissionCan.tsx b/frontend/src/components/permissions/ProjectPermissionCan.tsx
index f49709ff3..88a8c6ad9 100644
--- a/frontend/src/components/permissions/ProjectPermissionCan.tsx
+++ b/frontend/src/components/permissions/ProjectPermissionCan.tsx
@@ -1,9 +1,8 @@
import { FunctionComponent, ReactNode } from "react";
import { AbilityTuple, MongoAbility } from "@casl/ability";
import { Can } from "@casl/react";
-import { faLock } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { AccessRestrictedBanner } from "@app/components/v2";
import { ProjectPermissionSet, useProjectPermission } from "@app/context/ProjectPermissionContext";
import { Tooltip } from "../v2/Tooltip";
@@ -11,17 +10,7 @@ import { Tooltip } from "../v2/Tooltip";
export const ProjectPermissionGuardBanner = () => {
return (
-
-
-
-
-
-
Access Restricted
-
- Your role has limited permissions, please
contact your admin to gain access
-
-
-
+
);
};
diff --git a/frontend/src/components/v2/AccessRestrictedBanner/AccessRestrictedBanner.tsx b/frontend/src/components/v2/AccessRestrictedBanner/AccessRestrictedBanner.tsx
new file mode 100644
index 000000000..27fa3c982
--- /dev/null
+++ b/frontend/src/components/v2/AccessRestrictedBanner/AccessRestrictedBanner.tsx
@@ -0,0 +1,26 @@
+import { ReactNode } from "react";
+
+type Props = {
+ title?: string;
+ body?: ReactNode;
+};
+
+export const AccessRestrictedBanner = ({
+ title = "Access Restricted",
+
+ body = (
+ <>
+ Your current role doesn't provide access to this feature.
+
Contact your administrator to request access.
+ >
+ )
+}: Props) => {
+ return (
+
+ );
+};
diff --git a/frontend/src/components/v2/AccessRestrictedBanner/index.ts b/frontend/src/components/v2/AccessRestrictedBanner/index.ts
new file mode 100644
index 000000000..d60468572
--- /dev/null
+++ b/frontend/src/components/v2/AccessRestrictedBanner/index.ts
@@ -0,0 +1 @@
+export * from "./AccessRestrictedBanner";
diff --git a/frontend/src/components/v2/index.tsx b/frontend/src/components/v2/index.tsx
index 1256cf005..8019c3589 100644
--- a/frontend/src/components/v2/index.tsx
+++ b/frontend/src/components/v2/index.tsx
@@ -1,4 +1,5 @@
/* eslint-disable react-refresh/only-export-components */
+export * from "./AccessRestrictedBanner";
export * from "./Accordion";
export * from "./Alert";
export * from "./Badge";
diff --git a/frontend/src/hoc/withPermission/withPermission.tsx b/frontend/src/hoc/withPermission/withPermission.tsx
index ef814d958..529a74930 100644
--- a/frontend/src/hoc/withPermission/withPermission.tsx
+++ b/frontend/src/hoc/withPermission/withPermission.tsx
@@ -1,9 +1,8 @@
import { ComponentType } from "react";
import { Abilities, AbilityTuple, Generics, SubjectType } from "@casl/ability";
-import { faLock } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { twMerge } from "tailwind-merge";
+import { AccessRestrictedBanner } from "@app/components/v2";
import { TOrgPermission, useOrgPermission } from "@app/context";
type Props = (T extends AbilityTuple
@@ -14,11 +13,11 @@ type Props = (T extends AbilityTuple
: {
action: string;
subject: string;
- }) & { className?: string; containerClassName?: string };
+ }) & { containerClassName?: string };
export const withPermission = (
Component: ComponentType,
- { action, subject, className, containerClassName }: Props["abilities"]>
+ { action, subject, containerClassName }: Props["abilities"]>
) => {
const HOC = (hocProps: T) => {
const { permission } = useOrgPermission();
@@ -33,22 +32,7 @@ export const withPermission = (
containerClassName
)}
>
-
-
-
-
-
-
Access Restricted
-
- Your role has limited permissions, please
contact your admin to gain access
-
-
-
+
);
}
diff --git a/frontend/src/hoc/withProjectPermission/withProjectPermission.tsx b/frontend/src/hoc/withProjectPermission/withProjectPermission.tsx
index 564d44adc..7ba6efc57 100644
--- a/frontend/src/hoc/withProjectPermission/withProjectPermission.tsx
+++ b/frontend/src/hoc/withProjectPermission/withProjectPermission.tsx
@@ -1,14 +1,12 @@
import { ComponentType } from "react";
import { AbilityTuple } from "@casl/ability";
-import { faLock } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { twMerge } from "tailwind-merge";
+import { AccessRestrictedBanner } from "@app/components/v2";
import { useProjectPermission } from "@app/context";
import { ProjectPermissionSet } from "@app/context/ProjectPermissionContext";
type Props = {
- className?: string;
containerClassName?: string;
action: T[0];
subject: T[1];
@@ -16,7 +14,7 @@ type Props = {
export const withProjectPermission = (
Component: ComponentType, "action" | "subject"> & T>,
- { action, subject, className, containerClassName }: Props
+ { action, subject, containerClassName }: Props
) => {
const HOC = (hocProps: Omit, "action" | "subject"> & T) => {
const { permission } = useProjectPermission();
@@ -31,23 +29,7 @@ export const withProjectPermission = (
containerClassName
)}
>
-
-
-
-
-
-
Permission Denied
-
- You do not have permission to this page.
Kindly contact your organization
- administrator
-
-
-
+
);
}
diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx
index c11ff454d..3c2c0c859 100644
--- a/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx
+++ b/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx
@@ -948,12 +948,12 @@ const Page = () => {
/>
)}
{noAccessSecretCount > 0 && }
- {!canReadSecret &&
- !canReadDynamicSecret &&
- !canReadSecretImports &&
- folders?.length === 0 && }
+ {!canReadSecret &&
+ !canReadDynamicSecret &&
+ !canReadSecretImports &&
+ folders?.length === 0 && }
{!isDetailsLoading &&
(totalCount > 0 ||
pendingChanges.secrets.length > 0 ||
diff --git a/frontend/src/pages/secret-scanning/SettingsPage/components/ProjectScanningConfigTab/ProjectScanningConfigTab.tsx b/frontend/src/pages/secret-scanning/SettingsPage/components/ProjectScanningConfigTab/ProjectScanningConfigTab.tsx
index 73fd26c8b..e8d3206d8 100644
--- a/frontend/src/pages/secret-scanning/SettingsPage/components/ProjectScanningConfigTab/ProjectScanningConfigTab.tsx
+++ b/frontend/src/pages/secret-scanning/SettingsPage/components/ProjectScanningConfigTab/ProjectScanningConfigTab.tsx
@@ -1,6 +1,6 @@
import { faBan } from "@fortawesome/free-solid-svg-icons";
-import { ContentLoader, EmptyState } from "@app/components/v2";
+import { AccessRestrictedBanner, ContentLoader, EmptyState } from "@app/components/v2";
import { useSubscription, useWorkspace } from "@app/context";
import { useGetSecretScanningConfig } from "@app/hooks/api/secretScanningV2";
@@ -16,16 +16,14 @@ export const ProjectScanningConfigTab = () => {
if (!subscription.secretScanning) {
return (
-
-
+
+
Your current plan doesn't support Secret Scanning.
Please contact Infisical Support or reach out through our Slack channel for
assistance.
-
+ >
}
/>