From 2fa762e56d93c48cab2765842e6c518282368096 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 20 Oct 2025 19:09:19 +0530 Subject: [PATCH] feat: resolving rebase conflicts --- .../ee/services/sub-org/sub-org-service.ts | 4 +- .../hooks/api/orgIdentityMembership/types.ts | 4 +- .../components/NavBar/Navbar.tsx | 77 ++++++++++++++++++- .../components/OrgNavBar/OrgNavBar.tsx | 18 +++-- 4 files changed, 92 insertions(+), 11 deletions(-) diff --git a/backend/src/ee/services/sub-org/sub-org-service.ts b/backend/src/ee/services/sub-org/sub-org-service.ts index e2433a644..db5b89244 100644 --- a/backend/src/ee/services/sub-org/sub-org-service.ts +++ b/backend/src/ee/services/sub-org/sub-org-service.ts @@ -13,7 +13,7 @@ import { TPermissionServiceFactory } from "../permission/permission-service-type import { TCreateSubOrgDTO, TListSubOrgDTO } from "./sub-org-types"; type TSubOrgServiceFactoryDep = { - orgDAL: Pick; + orgDAL: Pick; permissionService: Pick; licenseService: Pick; membershipDAL: Pick; @@ -51,7 +51,7 @@ export const subOrgServiceFactory = ({ }); } - const existingSubOrg = await orgDAL.find({ + const existingSubOrg = await orgDAL.findOne({ parentOrgId: permissionActor.orgId, name }); diff --git a/frontend/src/hooks/api/orgIdentityMembership/types.ts b/frontend/src/hooks/api/orgIdentityMembership/types.ts index a50ddc1d0..95fa06b82 100644 --- a/frontend/src/hooks/api/orgIdentityMembership/types.ts +++ b/frontend/src/hooks/api/orgIdentityMembership/types.ts @@ -1,4 +1,6 @@ -import { TemporaryPermissionMode } from "@app/db/schemas"; +export enum TemporaryPermissionMode { + Relative = "relative" +} export type TOrgIdentityMembership = { id: string; diff --git a/frontend/src/layouts/OrganizationLayout/components/NavBar/Navbar.tsx b/frontend/src/layouts/OrganizationLayout/components/NavBar/Navbar.tsx index 3b48e7763..19a255ee9 100644 --- a/frontend/src/layouts/OrganizationLayout/components/NavBar/Navbar.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/NavBar/Navbar.tsx @@ -49,7 +49,13 @@ import { envConfig } from "@app/config/env"; import { useOrganization, useSubscription, useUser } from "@app/context"; import { isInfisicalCloud } from "@app/helpers/platform"; import { useToggle } from "@app/hooks"; -import { projectKeys, subOrganizationsQuery, useGetOrganizations, useGetOrgTrialUrl, useLogoutUser } from "@app/hooks/api"; +import { + projectKeys, + subOrganizationsQuery, + useGetOrganizations, + useGetOrgTrialUrl, + useLogoutUser +} from "@app/hooks/api"; import { authKeys, selectOrganization } from "@app/hooks/api/auth/queries"; import { MfaMethod } from "@app/hooks/api/auth/types"; import { getAuthToken } from "@app/hooks/api/reactQuery"; @@ -297,6 +303,75 @@ export const Navbar = () => { className="mt-6 cursor-default p-1 shadow-mineshaft-600 drop-shadow-md" style={{ minWidth: "220px" }} > + {subscription?.subOrganization && ( + <> + + + + + + } + onClick={() => setShowSubOrgForm(true)} + > + New Sub Organization + + {Boolean(subOrganizations.length) && ( +
+ )} + {subOrganizations?.map((org) => { + return ( + + + + ); + })} + + +
+ + )}
organizations
diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgNavBar/OrgNavBar.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgNavBar/OrgNavBar.tsx index ba34877f9..57f8d99f4 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgNavBar/OrgNavBar.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgNavBar/OrgNavBar.tsx @@ -4,12 +4,14 @@ import { motion } from "framer-motion"; import { CreateOrgModal } from "@app/components/organization/CreateOrgModal"; import { Tab, TabList, Tabs } from "@app/components/v2"; import { usePopUp } from "@app/hooks"; +import { useOrganization } from "@app/context"; type Props = { isHidden?: boolean; }; export const OrgNavBar = ({ isHidden }: Props) => { + const { isRootOrganization } = useOrganization(); const { popUp, handlePopUpToggle } = usePopUp(["createOrg"] as const); const { pathname } = useLocation(); @@ -80,13 +82,15 @@ export const OrgNavBar = ({ isHidden }: Props) => { )} - - {({ isActive }) => ( - - Usage & Billing - - )} - + {isRootOrganization && ( + + {({ isActive }) => ( + + Usage & Billing + + )} + + )} {({ isActive }) => (