From 79e414ea9ff92fff6dfd6bf349fc8d40f88ea0c6 Mon Sep 17 00:00:00 2001
From: =
Date: Thu, 1 Aug 2024 20:12:23 +0530
Subject: [PATCH] feat: resolved invite failing and removed all unused things
from frontend on previous upgrade
---
backend/src/server/routes/index.ts | 3 +-
.../project-membership-service.ts | 2 +-
.../src/services/project/project-service.ts | 26 ++-
.../v2/UpgradeOverlay/UpgradeOverlay.tsx | 47 -----
.../components/v2/UpgradeOverlay/index.tsx | 1 -
.../UpgradeProjectAlert.tsx | 168 ------------------
.../v2/UpgradeProjectAlert/index.tsx | 1 -
.../api/secretApprovalRequest/queries.tsx | 3 +-
.../hooks/api/secretApprovalRequest/types.ts | 2 -
frontend/src/views/Org/Types/index.ts | 4 +-
.../UserAddToProjectModal.tsx | 2 +-
.../MembersTab/components/AddMemberModal.tsx | 9 +-
frontend/src/views/Project/Types/index.ts | 4 +-
.../SecretApprovalRequestChanges.tsx | 5 +-
.../SecretOverviewPage/SecretOverviewPage.tsx | 7 -
.../SecretOverviewTableRow/SecretEditRow.tsx | 4 +-
.../ProjectGeneralTab/ProjectGeneralTab.tsx | 7 +-
17 files changed, 43 insertions(+), 252 deletions(-)
delete mode 100644 frontend/src/components/v2/UpgradeOverlay/UpgradeOverlay.tsx
delete mode 100644 frontend/src/components/v2/UpgradeOverlay/index.tsx
delete mode 100644 frontend/src/components/v2/UpgradeProjectAlert/UpgradeProjectAlert.tsx
delete mode 100644 frontend/src/components/v2/UpgradeProjectAlert/index.tsx
diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts
index 023e13000..e8f80f020 100644
--- a/backend/src/server/routes/index.ts
+++ b/backend/src/server/routes/index.ts
@@ -635,7 +635,8 @@ export const registerRoutes = async (
projectUserMembershipRoleDAL,
identityProjectMembershipRoleDAL,
keyStore,
- kmsService
+ kmsService,
+ projectBotDAL
});
const projectEnvService = projectEnvServiceFactory({
diff --git a/backend/src/services/project-membership/project-membership-service.ts b/backend/src/services/project-membership/project-membership-service.ts
index 45e3f9ab5..a03aec934 100644
--- a/backend/src/services/project-membership/project-membership-service.ts
+++ b/backend/src/services/project-membership/project-membership-service.ts
@@ -540,7 +540,7 @@ export const projectMembershipServiceFactory = ({
const project = await projectDAL.findById(projectId);
if (!project) throw new BadRequestError({ message: "Project not found" });
- if (project.version !== ProjectVersion.V2) {
+ if (project.version === ProjectVersion.V1) {
throw new BadRequestError({
message: "Please ask your project administrator to upgrade the project before leaving."
});
diff --git a/backend/src/services/project/project-service.ts b/backend/src/services/project/project-service.ts
index d1f393e7b..fd22349db 100644
--- a/backend/src/services/project/project-service.ts
+++ b/backend/src/services/project/project-service.ts
@@ -22,6 +22,7 @@ import { TIdentityProjectMembershipRoleDALFactory } from "../identity-project/id
import { TKmsServiceFactory } from "../kms/kms-service";
import { TOrgDALFactory } from "../org/org-dal";
import { TOrgServiceFactory } from "../org/org-service";
+import { TProjectBotDALFactory } from "../project-bot/project-bot-dal";
import { TProjectEnvDALFactory } from "../project-env/project-env-dal";
import { TProjectKeyDALFactory } from "../project-key/project-key-dal";
import { TProjectMembershipDALFactory } from "../project-membership/project-membership-dal";
@@ -74,6 +75,7 @@ type TProjectServiceFactoryDep = {
licenseService: Pick;
orgDAL: Pick;
keyStore: Pick;
+ projectBotDAL: Pick;
kmsService: Pick<
TKmsServiceFactory,
| "updateProjectSecretManagerKmsKey"
@@ -106,7 +108,8 @@ export const projectServiceFactory = ({
certificateAuthorityDAL,
certificateDAL,
keyStore,
- kmsService
+ kmsService,
+ projectBotDAL
}: TProjectServiceFactoryDep) => {
/*
* Create workspace. Make user the admin
@@ -206,7 +209,26 @@ export const projectServiceFactory = ({
tx
);
- // const { iv, tag, ciphertext, encoding, algorithm } = infisicalSymmetricEncypt(ghostUser.keys.plainPrivateKey);
+ const { iv, tag, ciphertext, encoding, algorithm } = infisicalSymmetricEncypt(ghostUser.keys.plainPrivateKey);
+
+ // 5. Create & a bot for the project
+ await projectBotDAL.create(
+ {
+ name: "Infisical Bot (Ghost)",
+ projectId: project.id,
+ tag,
+ iv,
+ encryptedProjectKey,
+ encryptedProjectKeyNonce: encryptedProjectKeyIv,
+ encryptedPrivateKey: ciphertext,
+ isActive: true,
+ publicKey: ghostUser.keys.publicKey,
+ senderId: ghostUser.user.id,
+ algorithm,
+ keyEncoding: encoding
+ },
+ tx
+ );
// Find the ghost users latest key
const latestKey = await projectKeyDAL.findLatestProjectKey(ghostUser.user.id, project.id, tx);
diff --git a/frontend/src/components/v2/UpgradeOverlay/UpgradeOverlay.tsx b/frontend/src/components/v2/UpgradeOverlay/UpgradeOverlay.tsx
deleted file mode 100644
index f6d8d71c7..000000000
--- a/frontend/src/components/v2/UpgradeOverlay/UpgradeOverlay.tsx
+++ /dev/null
@@ -1,47 +0,0 @@
-import { useRouter } from "next/router";
-
-import { Spinner } from "@app/components/v2";
-import { useWorkspace } from "@app/context";
-import { useToggle } from "@app/hooks";
-import { useGetUpgradeProjectStatus } from "@app/hooks/api/workspace/queries";
-import { ProjectVersion } from "@app/hooks/api/workspace/types";
-
-export const UpgradeOverlay = () => {
- const router = useRouter();
- const { currentWorkspace } = useWorkspace();
- const [isUpgrading, setIsUpgrading] = useToggle(false);
-
- const isProjectRoute = router.pathname.includes("/project");
-
- const { isLoading: isUpgradeStatusLoading } = useGetUpgradeProjectStatus({
- projectId: currentWorkspace?.id ?? "",
- enabled: isProjectRoute && currentWorkspace && currentWorkspace.version === ProjectVersion.V1,
- refetchInterval: 5_000,
- onSuccess: (data) => {
- if (!data) return;
-
- if (data.status !== "IN_PROGRESS") {
- setIsUpgrading.off();
- } else if (data?.status === "IN_PROGRESS") {
- setIsUpgrading.on();
- }
- }
- });
-
- // make sure only to display this on /project routes
- if (!currentWorkspace || !isProjectRoute) {
- return null;
- }
-
- return !isUpgradeStatusLoading && isUpgrading ? (
-
-
-
-
Please wait
-
Upgrading your project...
-
-
- ) : (
-
- );
-};
diff --git a/frontend/src/components/v2/UpgradeOverlay/index.tsx b/frontend/src/components/v2/UpgradeOverlay/index.tsx
deleted file mode 100644
index 1a74fb6f1..000000000
--- a/frontend/src/components/v2/UpgradeOverlay/index.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export { UpgradeOverlay } from "./UpgradeOverlay";
diff --git a/frontend/src/components/v2/UpgradeProjectAlert/UpgradeProjectAlert.tsx b/frontend/src/components/v2/UpgradeProjectAlert/UpgradeProjectAlert.tsx
deleted file mode 100644
index ebcba1d87..000000000
--- a/frontend/src/components/v2/UpgradeProjectAlert/UpgradeProjectAlert.tsx
+++ /dev/null
@@ -1,168 +0,0 @@
-import { useCallback, useState } from "react";
-import Link from "next/link";
-import { useRouter } from "next/router";
-import { faWarning } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { twMerge } from "tailwind-merge";
-
-import { createNotification } from "@app/components/notifications";
-import { useProjectPermission } from "@app/context";
-import { useGetUpgradeProjectStatus, useUpgradeProject } from "@app/hooks/api";
-import { Workspace } from "@app/hooks/api/types";
-import { workspaceKeys } from "@app/hooks/api/workspace/queries";
-import { ProjectVersion } from "@app/hooks/api/workspace/types";
-import { queryClient } from "@app/reactQuery";
-
-import { Button } from "../Button";
-import { Tooltip } from "../Tooltip";
-
-export type UpgradeProjectAlertProps = {
- project: Workspace;
- transparent?: boolean;
-};
-
-export const UpgradeProjectAlert = ({
- project,
- transparent
-}: UpgradeProjectAlertProps): JSX.Element | null => {
- const router = useRouter();
- const { hasProjectRole } = useProjectPermission();
- const upgradeProject = useUpgradeProject();
- const [currentStatus, setCurrentStatus] = useState(null);
- const [isUpgrading, setIsUpgrading] = useState(false);
-
- const isProjectAdmin = hasProjectRole("admin");
-
- const {
- data: projectStatus,
- isLoading: statusIsLoading,
- refetch: manualProjectStatusRefetch
- } = useGetUpgradeProjectStatus({
- projectId: project.id,
- enabled: isProjectAdmin && project.version === ProjectVersion.V1,
- refetchInterval: 5_000,
- onSuccess: (data) => {
- if (!isProjectAdmin) {
- return;
- }
-
- if (data && data?.status !== null) {
- if (data.status === "IN_PROGRESS") {
- setCurrentStatus("Your upgrade is being processed.");
- } else if (data.status === "FAILED") {
- setCurrentStatus("Upgrade failed, please try again.");
- }
- }
-
- if (currentStatus !== null && data?.status === null) {
- queryClient.invalidateQueries(workspaceKeys.getAllUserWorkspace);
- router.reload();
- }
- }
- });
-
- const onUpgradeProject = useCallback(async () => {
- if (upgradeProject.isLoading) {
- return;
- }
- setIsUpgrading(true);
- const PRIVATE_KEY = localStorage.getItem("PRIVATE_KEY");
-
- if (!PRIVATE_KEY) {
- createNotification({
- type: "error",
- text: "Private key not found"
- });
- return;
- }
-
- await upgradeProject.mutateAsync({
- projectId: project.id,
- privateKey: PRIVATE_KEY
- });
-
- manualProjectStatusRefetch();
-
- setTimeout(() => setIsUpgrading(false), 5_000);
- }, []);
-
- const isLoading =
- isUpgrading ||
- ((upgradeProject.isLoading ||
- currentStatus !== null ||
- (currentStatus === null && statusIsLoading)) &&
- projectStatus?.status !== "FAILED");
-
- if (project.version !== ProjectVersion.V1) return null;
-
- if (transparent) {
- return (
-
- Upgrade
-
- );
- }
-
- return (
-
-
-
-
Upgrade your project
- {isProjectAdmin ? (
- <>
-
- Upgrade your project version to continue receiving the latest improvements and
- patches.
-
-
-
- Learn more
-
-
- >
- ) : (
- <>
-
- Please ask a project admin to upgrade the project.
-
- Upgrading the project version is required to continue receiving the latest
- improvements and patches.
-
-
-
- Learn more
-
-
- >
- )}
- {currentStatus &&
Status: {currentStatus}
}
-
-
-
-
- Upgrade
-
-
-
-
- );
-};
diff --git a/frontend/src/components/v2/UpgradeProjectAlert/index.tsx b/frontend/src/components/v2/UpgradeProjectAlert/index.tsx
deleted file mode 100644
index ab67f86cf..000000000
--- a/frontend/src/components/v2/UpgradeProjectAlert/index.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export { UpgradeProjectAlert } from "./UpgradeProjectAlert";
diff --git a/frontend/src/hooks/api/secretApprovalRequest/queries.tsx b/frontend/src/hooks/api/secretApprovalRequest/queries.tsx
index d990797b6..a15316018 100644
--- a/frontend/src/hooks/api/secretApprovalRequest/queries.tsx
+++ b/frontend/src/hooks/api/secretApprovalRequest/queries.tsx
@@ -194,7 +194,6 @@ const fetchSecretApprovalRequestDetails = async ({
export const useGetSecretApprovalRequestDetails = ({
id,
- decryptKey,
options = {}
}: TGetSecretApprovalRequestDetails & {
options?: Omit<
@@ -210,7 +209,7 @@ export const useGetSecretApprovalRequestDetails = ({
useQuery({
queryKey: secretApprovalRequestKeys.detail({ id }),
queryFn: () => fetchSecretApprovalRequestDetails({ id }),
- enabled: Boolean(id && decryptKey) && (options?.enabled ?? true)
+ enabled: Boolean(id) && (options?.enabled ?? true)
});
const fetchSecretApprovalRequestCount = async ({ workspaceId }: TGetSecretApprovalRequestCount) => {
diff --git a/frontend/src/hooks/api/secretApprovalRequest/types.ts b/frontend/src/hooks/api/secretApprovalRequest/types.ts
index 9d9e46a7f..c8a685115 100644
--- a/frontend/src/hooks/api/secretApprovalRequest/types.ts
+++ b/frontend/src/hooks/api/secretApprovalRequest/types.ts
@@ -1,4 +1,3 @@
-import { UserWsKeyPair } from "../keys/types";
import { TSecretApprovalPolicy } from "../secretApproval/types";
import { SecretV3Raw } from "../secrets/types";
import { WsTag } from "../tags/types";
@@ -110,7 +109,6 @@ export type TGetSecretApprovalRequestCount = {
export type TGetSecretApprovalRequestDetails = {
id: string;
- decryptKey: UserWsKeyPair;
};
export type TUpdateSecretApprovalReviewStatusDTO = {
diff --git a/frontend/src/views/Org/Types/index.ts b/frontend/src/views/Org/Types/index.ts
index 76f47c6f2..8fa062aa1 100644
--- a/frontend/src/views/Org/Types/index.ts
+++ b/frontend/src/views/Org/Types/index.ts
@@ -1,3 +1,3 @@
-import { TabSections, isTabSection } from "./TabSections";
+import { isTabSection,TabSections } from "./TabSections";
-export { TabSections, isTabSection };
+export { isTabSection,TabSections };
diff --git a/frontend/src/views/Org/UserPage/components/UserProjectsSection/UserAddToProjectModal.tsx b/frontend/src/views/Org/UserPage/components/UserProjectsSection/UserAddToProjectModal.tsx
index 2cef4f5f3..713411ec2 100644
--- a/frontend/src/views/Org/UserPage/components/UserProjectsSection/UserAddToProjectModal.tsx
+++ b/frontend/src/views/Org/UserPage/components/UserProjectsSection/UserAddToProjectModal.tsx
@@ -58,7 +58,7 @@ export const UserAddToProjectModal = ({ membershipId, popUp, handlePopUpToggle }
return (workspaces || []).filter(
({ id, orgId: projectOrgId, version }) =>
- !wsWorkspaceIds.has(id) && projectOrgId === currentOrg?.id && version === ProjectVersion.V2
+ !wsWorkspaceIds.has(id) && projectOrgId === currentOrg?.id && version !== ProjectVersion.V1
);
}, [workspaces, projectMemberships]);
diff --git a/frontend/src/views/Project/MembersPage/components/MembersTab/components/AddMemberModal.tsx b/frontend/src/views/Project/MembersPage/components/MembersTab/components/AddMemberModal.tsx
index cd8137d8b..8a5fe705a 100644
--- a/frontend/src/views/Project/MembersPage/components/MembersTab/components/AddMemberModal.tsx
+++ b/frontend/src/views/Project/MembersPage/components/MembersTab/components/AddMemberModal.tsx
@@ -74,19 +74,12 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => {
decryptKey: wsKey,
members: [{ orgMembershipId, userPublicKey: orgUser.user.publicKey }]
});
- } else if (currentWorkspace.version === ProjectVersion.V2) {
+ } else {
await addUserToWorkspaceNonE2EE({
projectId: workspaceId,
usernames: [orgUser.user.username],
orgId
});
- } else {
- createNotification({
- text: "Failed to add user to project, unknown project type",
- type: "error"
- });
-
- return;
}
createNotification({
text: "Successfully added user to the project",
diff --git a/frontend/src/views/Project/Types/index.ts b/frontend/src/views/Project/Types/index.ts
index 76f47c6f2..8fa062aa1 100644
--- a/frontend/src/views/Project/Types/index.ts
+++ b/frontend/src/views/Project/Types/index.ts
@@ -1,3 +1,3 @@
-import { TabSections, isTabSection } from "./TabSections";
+import { isTabSection,TabSections } from "./TabSections";
-export { TabSections, isTabSection };
+export { isTabSection,TabSections };
diff --git a/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx b/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx
index 45de6417c..f313149d3 100644
--- a/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx
+++ b/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx
@@ -16,7 +16,6 @@ import { Button, ContentLoader, EmptyState, IconButton, Tooltip } from "@app/com
import { useUser } from "@app/context";
import {
useGetSecretApprovalRequestDetails,
- useGetUserWsKey,
useUpdateSecretApprovalReviewStatus
} from "@app/hooks/api";
import { ApprovalStatus, CommitType } from "@app/hooks/api/types";
@@ -81,14 +80,12 @@ export const SecretApprovalRequestChanges = ({
workspaceId
}: Props) => {
const { user: userSession } = useUser();
- const { data: decryptFileKey } = useGetUserWsKey(workspaceId);
const {
data: secretApprovalRequestDetails,
isSuccess: isSecretApprovalRequestSuccess,
isLoading: isSecretApprovalRequestLoading
} = useGetSecretApprovalRequestDetails({
- id: approvalRequestId,
- decryptKey: decryptFileKey!
+ id: approvalRequestId
});
const {
diff --git a/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx b/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx
index f9f279fe7..27e14e907 100644
--- a/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx
+++ b/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx
@@ -42,7 +42,6 @@ import {
Tooltip,
Tr
} from "@app/components/v2";
-import { UpgradeProjectAlert } from "@app/components/v2/UpgradeProjectAlert";
import {
ProjectPermissionActions,
ProjectPermissionSub,
@@ -64,7 +63,6 @@ import {
import { useUpdateFolderBatch } from "@app/hooks/api/secretFolders/queries";
import { TUpdateFolderBatchDTO } from "@app/hooks/api/secretFolders/types";
import { SecretType, TSecretFolder } from "@app/hooks/api/types";
-import { ProjectVersion } from "@app/hooks/api/workspace/types";
import { FolderForm } from "../SecretMainPage/components/ActionBar/FolderForm";
import { CreateSecretForm } from "./components/CreateSecretForm";
@@ -520,11 +518,6 @@ export const SecretOverviewPage = () => {
.
-
- {currentWorkspace?.version === ProjectVersion.V1 && (
-
- )}
-
diff --git a/frontend/src/views/SecretOverviewPage/components/SecretOverviewTableRow/SecretEditRow.tsx b/frontend/src/views/SecretOverviewPage/components/SecretOverviewTableRow/SecretEditRow.tsx
index 28f5fe964..1888bcda3 100644
--- a/frontend/src/views/SecretOverviewPage/components/SecretOverviewTableRow/SecretEditRow.tsx
+++ b/frontend/src/views/SecretOverviewPage/components/SecretOverviewTableRow/SecretEditRow.tsx
@@ -1,4 +1,4 @@
-import { useState, useCallback } from "react";
+import { useCallback,useState } from "react";
import { Controller, useForm } from "react-hook-form";
import { subject } from "@casl/ability";
import { faCheck, faCopy, faTrash, faXmark } from "@fortawesome/free-solid-svg-icons";
@@ -7,7 +7,7 @@ import { twMerge } from "tailwind-merge";
import { createNotification } from "@app/components/notifications";
import { ProjectPermissionCan } from "@app/components/permissions";
-import { IconButton, Tooltip, DeleteActionModal } from "@app/components/v2";
+import { DeleteActionModal,IconButton, Tooltip } from "@app/components/v2";
import { InfisicalSecretInput } from "@app/components/v2/InfisicalSecretInput";
import { ProjectPermissionActions, ProjectPermissionSub } from "@app/context";
import { useToggle } from "@app/hooks";
diff --git a/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx b/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx
index 992b1b6c6..fa63f4c97 100644
--- a/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx
+++ b/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx
@@ -1,3 +1,6 @@
+import { useWorkspace } from "@app/context";
+import { ProjectVersion } from "@app/hooks/api/workspace/types";
+
import { AuditLogsRetentionSection } from "../AuditLogsRetentionSection";
import { AutoCapitalizationSection } from "../AutoCapitalizationSection";
import { BackfillSecretReferenceSecretion } from "../BackfillSecretReferenceSection";
@@ -9,6 +12,8 @@ import { RebuildSecretIndicesSection } from "../RebuildSecretIndicesSection/Rebu
import { SecretTagsSection } from "../SecretTagsSection";
export const ProjectGeneralTab = () => {
+ const { currentWorkspace } = useWorkspace();
+
return (
@@ -18,7 +23,7 @@ export const ProjectGeneralTab = () => {
-
+ {currentWorkspace?.version !== ProjectVersion.V3 &&
}
);