From b0c1c9ce26b4ba4cb3e83c1555c14623d739a403 Mon Sep 17 00:00:00 2001 From: = Date: Fri, 27 Jun 2025 14:42:13 +0530 Subject: [PATCH] feat: added project settings and access management --- .../ProjectGeneralLayout.tsx | 167 +--- .../layouts/ProjectGeneralLayout/index.tsx | 3 +- .../layouts/ProjectLayout/ProjectLayout.tsx | 28 +- .../SecretManagerLayout.tsx | 2 +- .../AccessControlPage/route-cert-manager.tsx | 44 - .../project/AccessControlPage/route-kms.tsx | 44 - .../route-secret-manager.tsx | 44 - .../route-secret-scanning.tsx | 44 - .../project/AccessControlPage/route-ssh.tsx | 36 - .../pages/project/AccessControlPage/route.tsx | 27 + .../route-cert-manager.tsx | 28 - .../GroupDetailsByIDPage/route-kms.tsx | 28 - .../route-secret-manager.tsx | 28 - .../route-secret-scanning.tsx | 28 - .../GroupDetailsByIDPage/route-ssh.tsx | 28 - .../project/GroupDetailsByIDPage/route.tsx | 24 +- .../route-cert-manager.tsx | 28 - .../IdentityDetailsByIDPage/route-kms.tsx | 28 - .../route-secret-manager.tsx | 28 - .../route-secret-scanning.tsx | 28 - .../IdentityDetailsByIDPage/route-ssh.tsx | 28 - .../project/IdentityDetailsByIDPage/route.tsx | 14 + .../route-cert-manager.tsx | 28 - .../MemberDetailsByIDPage/route-kms.tsx | 28 - .../route-secret-manager.tsx | 28 - .../route-secret-scanning.tsx | 28 - .../MemberDetailsByIDPage/route-ssh.tsx | 28 - .../project/MemberDetailsByIDPage/route.tsx | 14 + .../route-cert-manager.tsx | 28 - .../RoleDetailsBySlugPage/route-kms.tsx | 28 - .../route-secret-manager.tsx | 28 - .../route-secret-scanning.tsx | 28 - .../RoleDetailsBySlugPage/route-ssh.tsx | 28 - .../project/RoleDetailsBySlugPage/route.tsx | 14 + .../src/pages/project/SettingsPage/route.tsx | 16 +- frontend/src/pages/project/layout-general.tsx | 8 + .../IntegrationsListPage/route.tsx | 90 +- frontend/src/routeTree.gen.ts | 906 ++++-------------- frontend/src/routes.ts | 45 +- 39 files changed, 419 insertions(+), 1711 deletions(-) delete mode 100644 frontend/src/pages/project/AccessControlPage/route-cert-manager.tsx delete mode 100644 frontend/src/pages/project/AccessControlPage/route-kms.tsx delete mode 100644 frontend/src/pages/project/AccessControlPage/route-secret-manager.tsx delete mode 100644 frontend/src/pages/project/AccessControlPage/route-secret-scanning.tsx delete mode 100644 frontend/src/pages/project/AccessControlPage/route-ssh.tsx create mode 100644 frontend/src/pages/project/AccessControlPage/route.tsx delete mode 100644 frontend/src/pages/project/GroupDetailsByIDPage/route-cert-manager.tsx delete mode 100644 frontend/src/pages/project/GroupDetailsByIDPage/route-kms.tsx delete mode 100644 frontend/src/pages/project/GroupDetailsByIDPage/route-secret-manager.tsx delete mode 100644 frontend/src/pages/project/GroupDetailsByIDPage/route-secret-scanning.tsx delete mode 100644 frontend/src/pages/project/GroupDetailsByIDPage/route-ssh.tsx delete mode 100644 frontend/src/pages/project/IdentityDetailsByIDPage/route-cert-manager.tsx delete mode 100644 frontend/src/pages/project/IdentityDetailsByIDPage/route-kms.tsx delete mode 100644 frontend/src/pages/project/IdentityDetailsByIDPage/route-secret-manager.tsx delete mode 100644 frontend/src/pages/project/IdentityDetailsByIDPage/route-secret-scanning.tsx delete mode 100644 frontend/src/pages/project/IdentityDetailsByIDPage/route-ssh.tsx create mode 100644 frontend/src/pages/project/IdentityDetailsByIDPage/route.tsx delete mode 100644 frontend/src/pages/project/MemberDetailsByIDPage/route-cert-manager.tsx delete mode 100644 frontend/src/pages/project/MemberDetailsByIDPage/route-kms.tsx delete mode 100644 frontend/src/pages/project/MemberDetailsByIDPage/route-secret-manager.tsx delete mode 100644 frontend/src/pages/project/MemberDetailsByIDPage/route-secret-scanning.tsx delete mode 100644 frontend/src/pages/project/MemberDetailsByIDPage/route-ssh.tsx create mode 100644 frontend/src/pages/project/MemberDetailsByIDPage/route.tsx delete mode 100644 frontend/src/pages/project/RoleDetailsBySlugPage/route-cert-manager.tsx delete mode 100644 frontend/src/pages/project/RoleDetailsBySlugPage/route-kms.tsx delete mode 100644 frontend/src/pages/project/RoleDetailsBySlugPage/route-secret-manager.tsx delete mode 100644 frontend/src/pages/project/RoleDetailsBySlugPage/route-secret-scanning.tsx delete mode 100644 frontend/src/pages/project/RoleDetailsBySlugPage/route-ssh.tsx create mode 100644 frontend/src/pages/project/RoleDetailsBySlugPage/route.tsx create mode 100644 frontend/src/pages/project/layout-general.tsx diff --git a/frontend/src/layouts/ProjectGeneralLayout/ProjectGeneralLayout.tsx b/frontend/src/layouts/ProjectGeneralLayout/ProjectGeneralLayout.tsx index c1f8701d1..fe9e88f74 100644 --- a/frontend/src/layouts/ProjectGeneralLayout/ProjectGeneralLayout.tsx +++ b/frontend/src/layouts/ProjectGeneralLayout/ProjectGeneralLayout.tsx @@ -1,137 +1,54 @@ -import { useTranslation } from "react-i18next"; -import { faMobile } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Link, Outlet } from "@tanstack/react-router"; import { motion } from "framer-motion"; -import { Badge, Menu, MenuItem } from "@app/components/v2"; +import { Menu, MenuItem } from "@app/components/v2"; import { useWorkspace } from "@app/context"; -import { - useGetAccessRequestsCount, - useGetSecretApprovalRequestCount, - useGetSecretRotations -} from "@app/hooks/api"; -import { ProjectType } from "@app/hooks/api/workspace/types"; -// This is a generic layout shared by all types of projects. -// If the product layout differs significantly, create a new layout as needed. export const ProjectGeneralLayout = () => { const { currentWorkspace } = useWorkspace(); - const { t } = useTranslation(); - const workspaceId = currentWorkspace?.id || ""; - const projectSlug = currentWorkspace?.slug || ""; - - const { data: secretApprovalReqCount } = useGetSecretApprovalRequestCount({ - workspaceId - }); - const { data: accessApprovalRequestCount } = useGetAccessRequestsCount({ - projectSlug - }); - - // we only show the secret rotations v1 tab if they have existing rotations - const { data: secretRotations } = useGetSecretRotations({ - workspaceId, - options: { - refetchOnMount: false - } - }); - - const pendingRequestsCount = - (secretApprovalReqCount?.open || 0) + (accessApprovalRequestCount?.pendingCount || 0); - return ( - <> -
-
- - - -
- -
+
+
+ + + +
+
-
- -

- {` ${t("common.no-mobile")} `} -

-
- +
); -}; \ No newline at end of file +}; + diff --git a/frontend/src/layouts/ProjectGeneralLayout/index.tsx b/frontend/src/layouts/ProjectGeneralLayout/index.tsx index 417259a7d..56a93994a 100644 --- a/frontend/src/layouts/ProjectGeneralLayout/index.tsx +++ b/frontend/src/layouts/ProjectGeneralLayout/index.tsx @@ -1 +1,2 @@ -export { ProjectGeneralLayout } from "./ProjectGeneralLayout"; \ No newline at end of file +export { ProjectGeneralLayout } from "./ProjectGeneralLayout"; + diff --git a/frontend/src/layouts/ProjectLayout/ProjectLayout.tsx b/frontend/src/layouts/ProjectLayout/ProjectLayout.tsx index 15b191972..de9f1ab26 100644 --- a/frontend/src/layouts/ProjectLayout/ProjectLayout.tsx +++ b/frontend/src/layouts/ProjectLayout/ProjectLayout.tsx @@ -189,6 +189,32 @@ export const ProjectLayout = () => { + + + {({ isActive }) => ( + + } + > + {isActive && ( +
+ )} + Access Control + + )} + + { position="right" > {({ isActive }) => ( diff --git a/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx b/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx index 2a1743339..62f8abfd5 100644 --- a/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx +++ b/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx @@ -51,7 +51,7 @@ export const SecretManagerLayout = () => { >