-
Import from external source
+
+
+
+
+
Import from external source
-
+
+
+
Import data from another platform to Infisical.
-
+
handlePopUpToggle("selectImportPlatform", state)}
+ />
-
Import data from another platform to Infisical.
-
-
handlePopUpToggle("selectImportPlatform", state)}
- />
-
+
);
};
diff --git a/frontend-v2/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx b/frontend-v2/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx
index 799067da0..080139540 100644
--- a/frontend-v2/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx
+++ b/frontend-v2/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx
@@ -1,11 +1,10 @@
import { useState } from "react";
import { useSearch } from "@tanstack/react-router";
-import { OrgPermissionCan } from "@app/components/permissions";
import { Tab, TabList, TabPanel, Tabs } from "@app/components/v2";
import { ROUTE_PATHS } from "@app/const/routes";
-import { OrgPermissionActions, OrgPermissionSubjects } from "@app/context";
+import { AppConnectionsTab } from "../AppConnectionsTab";
import { AuditLogStreamsTab } from "../AuditLogStreamTab";
import { ImportTab } from "../ImportTab";
import { OrgAuthTab } from "../OrgAuthTab";
@@ -14,19 +13,25 @@ import { OrgGeneralTab } from "../OrgGeneralTab";
import { OrgWorkflowIntegrationTab } from "../OrgWorkflowIntegrationTab/OrgWorkflowIntegrationTab";
import { ProjectTemplatesTab } from "../ProjectTemplatesTab";
-const tabs = [
- { name: "General", key: "tab-org-general" },
- { name: "Security", key: "tab-org-security" },
- { name: "Encryption", key: "tab-org-encryption" },
- { name: "Workflow Integrations", key: "workflow-integrations" },
- { name: "Audit Log Streams", key: "tag-audit-log-streams" },
- { name: "Import", key: "tab-import" },
- { name: "Project Templates", key: "project-templates" }
-];
export const OrgTabGroup = () => {
const search = useSearch({
from: ROUTE_PATHS.Organization.SettingsPage.id
});
+ const tabs = [
+ { name: "General", key: "tab-org-general", component: OrgGeneralTab },
+ { name: "Security", key: "tab-org-security", component: OrgAuthTab },
+ { name: "Encryption", key: "tab-org-encryption", component: OrgEncryptionTab },
+ {
+ name: "Workflow Integrations",
+ key: "workflow-integrations",
+ component: OrgWorkflowIntegrationTab
+ },
+ { name: "App Connections", key: "app-connections", component: AppConnectionsTab },
+ { name: "Audit Log Streams", key: "tag-audit-log-streams", component: AuditLogStreamsTab },
+ { name: "Import", key: "tab-import", component: ImportTab },
+ { name: "Project Templates", key: "project-templates", component: ProjectTemplatesTab }
+ ];
+
const [selectedTab, setSelectedTab] = useState(search.selectedTab || tabs[0].key);
return (
@@ -38,29 +43,11 @@ export const OrgTabGroup = () => {
))}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ {tabs.map(({ key, component: Component }) => (
+
+
-
-
-
-
+ ))}
);
};
diff --git a/frontend-v2/src/pages/organization/SettingsPage/route.tsx b/frontend-v2/src/pages/organization/SettingsPage/route.tsx
index ed6da9cd9..d19733c89 100644
--- a/frontend-v2/src/pages/organization/SettingsPage/route.tsx
+++ b/frontend-v2/src/pages/organization/SettingsPage/route.tsx
@@ -1,4 +1,4 @@
-import { createFileRoute } from "@tanstack/react-router";
+import { createFileRoute, stripSearchParams } from "@tanstack/react-router";
import { zodValidator } from "@tanstack/zod-adapter";
import { z } from "zod";
@@ -12,5 +12,8 @@ export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/settings"
)({
component: SettingsPage,
- validateSearch: zodValidator(SettingsPageQueryParams)
+ validateSearch: zodValidator(SettingsPageQueryParams),
+ search: {
+ middlewares: [stripSearchParams({ selectedTab: "" })]
+ }
});
diff --git a/frontend-v2/src/pages/secret-manager/OverviewPage/components/SecretSearchInput/components/QuickSearchModal.tsx b/frontend-v2/src/pages/secret-manager/OverviewPage/components/SecretSearchInput/components/QuickSearchModal.tsx
index 450757ae4..c5fb9be22 100644
--- a/frontend-v2/src/pages/secret-manager/OverviewPage/components/SecretSearchInput/components/QuickSearchModal.tsx
+++ b/frontend-v2/src/pages/secret-manager/OverviewPage/components/SecretSearchInput/components/QuickSearchModal.tsx
@@ -34,11 +34,11 @@ import { useDebounce } from "@app/hooks";
import { useGetProjectSecretsQuickSearch } from "@app/hooks/api/dashboard";
import { WsTag } from "@app/hooks/api/tags/types";
import { WorkspaceEnv } from "@app/hooks/api/workspace/types";
+import { RowType } from "@app/pages/secret-manager/SecretDashboardPage/SecretMainPage.types";
import { QuickSearchDynamicSecretItem } from "./QuickSearchDynamicSecretItem";
import { QuickSearchFolderItem } from "./QuickSearchFolderItem";
import { QuickSearchSecretItem } from "./QuickSearchSecretItem";
-import { RowType } from "@app/pages/secret-manager/SecretDashboardPage/SecretMainPage.types";
export type QuickSearchModalProps = {
environments: WorkspaceEnv[];
diff --git a/frontend-v2/src/routeTree.gen.ts b/frontend-v2/src/routeTree.gen.ts
index 0459a8b4d..957794a9c 100644
--- a/frontend-v2/src/routeTree.gen.ts
+++ b/frontend-v2/src/routeTree.gen.ts
@@ -81,6 +81,7 @@ import { Route as projectMemberDetailsByIDPageRouteCertManagerImport } from './p
import { Route as projectIdentityDetailsByIDPageRouteCertManagerImport } from './pages/project/IdentityDetailsByIDPage/route-cert-manager'
import { Route as secretManagerSecretDashboardPageRouteImport } from './pages/secret-manager/SecretDashboardPage/route'
import { Route as certManagerCertAuthDetailsByIDPageRouteImport } from './pages/cert-manager/CertAuthDetailsByIDPage/route'
+import { Route as organizationAppConnectionsGithubOauthCallbackPageRouteImport } from './pages/organization/AppConnections/GithubOauthCallbackPage/route'
// Create Virtual Routes
@@ -614,6 +615,13 @@ const certManagerCertAuthDetailsByIDPageRouteRoute =
getParentRoute: () => certManagerLayoutRoute,
} as any)
+const organizationAppConnectionsGithubOauthCallbackPageRouteRoute =
+ organizationAppConnectionsGithubOauthCallbackPageRouteImport.update({
+ id: '/app-connections/github/oauth/callback',
+ path: '/app-connections/github/oauth/callback',
+ getParentRoute: () => organizationLayoutRoute,
+ } as any)
+
// Populate the FileRoutesByPath interface
declare module '@tanstack/react-router' {
@@ -1150,6 +1158,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof projectRoleDetailsBySlugPageRouteSecretManagerImport
parentRoute: typeof secretManagerLayoutImport
}
+ '/_authenticate/_inject-org-details/organization/_layout/app-connections/github/oauth/callback': {
+ id: '/_authenticate/_inject-org-details/organization/_layout/app-connections/github/oauth/callback'
+ path: '/app-connections/github/oauth/callback'
+ fullPath: '/organization/app-connections/github/oauth/callback'
+ preLoaderRoute: typeof organizationAppConnectionsGithubOauthCallbackPageRouteImport
+ parentRoute: typeof organizationLayoutImport
+ }
}
}
@@ -1171,6 +1186,7 @@ interface organizationLayoutRouteChildren {
organizationUserDetailsByIDPageRouteRoute: typeof organizationUserDetailsByIDPageRouteRoute
organizationRoleByIDPageRouteRoute: typeof organizationRoleByIDPageRouteRoute
organizationSecretManagerOverviewPageRouteRoute: typeof organizationSecretManagerOverviewPageRouteRoute
+ organizationAppConnectionsGithubOauthCallbackPageRouteRoute: typeof organizationAppConnectionsGithubOauthCallbackPageRouteRoute
}
const organizationLayoutRouteChildren: organizationLayoutRouteChildren = {
@@ -1197,6 +1213,8 @@ const organizationLayoutRouteChildren: organizationLayoutRouteChildren = {
organizationRoleByIDPageRouteRoute: organizationRoleByIDPageRouteRoute,
organizationSecretManagerOverviewPageRouteRoute:
organizationSecretManagerOverviewPageRouteRoute,
+ organizationAppConnectionsGithubOauthCallbackPageRouteRoute:
+ organizationAppConnectionsGithubOauthCallbackPageRouteRoute,
}
const organizationLayoutRouteWithChildren =
@@ -1583,6 +1601,7 @@ export interface FileRoutesByFullPath {
'/secret-manager/$projectId/identities/$identityId': typeof projectIdentityDetailsByIDPageRouteSecretManagerRoute
'/secret-manager/$projectId/members/$membershipId': typeof projectMemberDetailsByIDPageRouteSecretManagerRoute
'/secret-manager/$projectId/roles/$roleSlug': typeof projectRoleDetailsBySlugPageRouteSecretManagerRoute
+ '/organization/app-connections/github/oauth/callback': typeof organizationAppConnectionsGithubOauthCallbackPageRouteRoute
}
export interface FileRoutesByTo {
@@ -1650,6 +1669,7 @@ export interface FileRoutesByTo {
'/secret-manager/$projectId/identities/$identityId': typeof projectIdentityDetailsByIDPageRouteSecretManagerRoute
'/secret-manager/$projectId/members/$membershipId': typeof projectMemberDetailsByIDPageRouteSecretManagerRoute
'/secret-manager/$projectId/roles/$roleSlug': typeof projectRoleDetailsBySlugPageRouteSecretManagerRoute
+ '/organization/app-connections/github/oauth/callback': typeof organizationAppConnectionsGithubOauthCallbackPageRouteRoute
}
export interface FileRoutesById {
@@ -1730,6 +1750,7 @@ export interface FileRoutesById {
'/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/identities/$identityId': typeof projectIdentityDetailsByIDPageRouteSecretManagerRoute
'/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/members/$membershipId': typeof projectMemberDetailsByIDPageRouteSecretManagerRoute
'/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/roles/$roleSlug': typeof projectRoleDetailsBySlugPageRouteSecretManagerRoute
+ '/_authenticate/_inject-org-details/organization/_layout/app-connections/github/oauth/callback': typeof organizationAppConnectionsGithubOauthCallbackPageRouteRoute
}
export interface FileRouteTypes {
@@ -1803,6 +1824,7 @@ export interface FileRouteTypes {
| '/secret-manager/$projectId/identities/$identityId'
| '/secret-manager/$projectId/members/$membershipId'
| '/secret-manager/$projectId/roles/$roleSlug'
+ | '/organization/app-connections/github/oauth/callback'
fileRoutesByTo: FileRoutesByTo
to:
| '/'
@@ -1869,6 +1891,7 @@ export interface FileRouteTypes {
| '/secret-manager/$projectId/identities/$identityId'
| '/secret-manager/$projectId/members/$membershipId'
| '/secret-manager/$projectId/roles/$roleSlug'
+ | '/organization/app-connections/github/oauth/callback'
id:
| '__root__'
| '/'
@@ -1947,6 +1970,7 @@ export interface FileRouteTypes {
| '/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/identities/$identityId'
| '/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/members/$membershipId'
| '/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/roles/$roleSlug'
+ | '/_authenticate/_inject-org-details/organization/_layout/app-connections/github/oauth/callback'
fileRoutesById: FileRoutesById
}
@@ -2181,7 +2205,8 @@ export const routeTree = rootRoute
"/_authenticate/_inject-org-details/organization/_layout/kms/overview",
"/_authenticate/_inject-org-details/organization/_layout/members/$membershipId",
"/_authenticate/_inject-org-details/organization/_layout/roles/$roleId",
- "/_authenticate/_inject-org-details/organization/_layout/secret-manager/overview"
+ "/_authenticate/_inject-org-details/organization/_layout/secret-manager/overview",
+ "/_authenticate/_inject-org-details/organization/_layout/app-connections/github/oauth/callback"
]
},
"/_authenticate/_inject-org-details/secret-manager/$projectId": {
@@ -2388,6 +2413,10 @@ export const routeTree = rootRoute
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/roles/$roleSlug": {
"filePath": "project/RoleDetailsBySlugPage/route-secret-manager.tsx",
"parent": "/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout"
+ },
+ "/_authenticate/_inject-org-details/organization/_layout/app-connections/github/oauth/callback": {
+ "filePath": "organization/AppConnections/GithubOauthCallbackPage/route.tsx",
+ "parent": "/_authenticate/_inject-org-details/organization/_layout"
}
}
}
diff --git a/frontend-v2/src/routes.ts b/frontend-v2/src/routes.ts
index 0ca4f9527..fdc269379 100644
--- a/frontend-v2/src/routes.ts
+++ b/frontend-v2/src/routes.ts
@@ -23,7 +23,11 @@ const organizationRoutes = route("/organization", [
route("/groups/$groupId", "organization/GroupDetailsByIDPage/route.tsx"),
route("/members/$membershipId", "organization/UserDetailsByIDPage/route.tsx"),
route("/roles/$roleId", "organization/RoleByIDPage/route.tsx"),
- route("/identities/$identityId", "organization/IdentityDetailsByIDPage/route.tsx")
+ route("/identities/$identityId", "organization/IdentityDetailsByIDPage/route.tsx"),
+ route(
+ "/app-connections/github/oauth/callback",
+ "organization/AppConnections/GithubOauthCallbackPage/route.tsx"
+ )
])
]);
diff --git a/frontend-v2/src/types/index.ts b/frontend-v2/src/types/index.ts
new file mode 100644
index 000000000..ce14b6acd
--- /dev/null
+++ b/frontend-v2/src/types/index.ts
@@ -0,0 +1 @@
+export type DiscriminativePick
= T extends unknown ? Pick : never;