diff --git a/backend/src/services/project-membership/project-membership-service.ts b/backend/src/services/project-membership/project-membership-service.ts index e96247c97..cf538e2c5 100644 --- a/backend/src/services/project-membership/project-membership-service.ts +++ b/backend/src/services/project-membership/project-membership-service.ts @@ -419,10 +419,6 @@ export const projectMembershipServiceFactory = ({ }); } - if (project.version === ProjectVersion.V1) { - throw new BadRequestError({ message: "Please upgrade your project on your dashboard" }); - } - const projectMembers = await projectMembershipDAL.findMembershipsByEmail(projectId, emails); if (projectMembers.length !== emails.length) { diff --git a/backend/src/services/project/project-fns.ts b/backend/src/services/project/project-fns.ts index 0f1f5a08d..3ac75248d 100644 --- a/backend/src/services/project/project-fns.ts +++ b/backend/src/services/project/project-fns.ts @@ -33,11 +33,12 @@ export const assignWorkspaceKeysToMembers = ({ members, decryptKey, userPrivateK type TCreateProjectKeyDTO = { publicKey: string; privateKey: string; + plainProjectKey?: string; }; -export const createProjectKey = ({ publicKey, privateKey }: TCreateProjectKeyDTO) => { +export const createProjectKey = ({ publicKey, privateKey, plainProjectKey }: TCreateProjectKeyDTO) => { // 3. Create a random key that we'll use as the project key. - const randomBytes = crypto.randomBytes(16).toString("hex"); + const randomBytes = plainProjectKey || crypto.randomBytes(16).toString("hex"); // 4. Encrypt the project key with the users key pair. const { ciphertext: encryptedProjectKey, nonce: encryptedProjectKeyIv } = encryptAsymmetric( diff --git a/backend/src/services/project/project-queue.ts b/backend/src/services/project/project-queue.ts index 616aa1aef..efc795cae 100644 --- a/backend/src/services/project/project-queue.ts +++ b/backend/src/services/project/project-queue.ts @@ -122,6 +122,13 @@ export const projectQueueFactory = ({ tag: data.encryptedPrivateKey.encryptedKeyTag }); + const decryptedPlainProjectKey = decryptAsymmetric({ + ciphertext: oldProjectKey.encryptedKey, + nonce: oldProjectKey.nonce, + publicKey: oldProjectKey.sender.publicKey, + privateKey: userPrivateKey + }); + const projectEnvs = await projectEnvDAL.find({ projectId: project.id }); @@ -199,6 +206,7 @@ export const projectQueueFactory = ({ // Create a project key const { key: newEncryptedProjectKey, iv: newEncryptedProjectKeyIv } = createProjectKey({ + plainProjectKey: decryptedPlainProjectKey, publicKey: ghostUser.keys.publicKey, privateKey: ghostUser.keys.plainPrivateKey }); diff --git a/docs/api-reference/endpoints/workspaces/create-workspace.mdx b/docs/api-reference/endpoints/workspaces/create-workspace.mdx index ec3d09b81..a8a7d0430 100644 --- a/docs/api-reference/endpoints/workspaces/create-workspace.mdx +++ b/docs/api-reference/endpoints/workspaces/create-workspace.mdx @@ -1,4 +1,4 @@ --- -title: "Create Workspace" +title: "Create Project" openapi: "POST /api/v2/workspace" --- \ No newline at end of file diff --git a/docs/api-reference/endpoints/workspaces/delete-workspace.mdx b/docs/api-reference/endpoints/workspaces/delete-workspace.mdx index ca6cb8914..6b5675c4b 100644 --- a/docs/api-reference/endpoints/workspaces/delete-workspace.mdx +++ b/docs/api-reference/endpoints/workspaces/delete-workspace.mdx @@ -1,5 +1,5 @@ --- -title: "Delete Workspace" +title: "Delete Project" openapi: "DELETE /api/v1/workspace/{workspaceId}" --- diff --git a/docs/api-reference/endpoints/workspaces/get-workspace.mdx b/docs/api-reference/endpoints/workspaces/get-workspace.mdx index 2d27d9455..edd0a0276 100644 --- a/docs/api-reference/endpoints/workspaces/get-workspace.mdx +++ b/docs/api-reference/endpoints/workspaces/get-workspace.mdx @@ -1,4 +1,4 @@ --- -title: "Get Workspace" +title: "Get Project" openapi: "GET /api/v1/workspace/{workspaceId}" --- \ No newline at end of file diff --git a/docs/api-reference/endpoints/workspaces/update-workspace.mdx b/docs/api-reference/endpoints/workspaces/update-workspace.mdx index 81a6ec8ea..699e3e3af 100644 --- a/docs/api-reference/endpoints/workspaces/update-workspace.mdx +++ b/docs/api-reference/endpoints/workspaces/update-workspace.mdx @@ -1,4 +1,4 @@ --- -title: "Update Workspace" +title: "Update Project" openapi: "PATCH /api/v1/workspace/{workspaceId}" --- \ No newline at end of file diff --git a/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx b/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx index 66e026fca..b3e0efb8a 100644 --- a/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx +++ b/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx @@ -29,7 +29,7 @@ import { Tooltip, Tr } from "@app/components/v2"; -// import { UpgradeProjectAlert } from "@app/components/v2/UpgradeProjectAlert"; +import { UpgradeProjectAlert } from "@app/components/v2/UpgradeProjectAlert"; import { useOrganization, useWorkspace } from "@app/context"; import { useCreateFolder, @@ -40,8 +40,8 @@ import { useGetUserWsKey, useUpdateSecretV3 } from "@app/hooks/api"; +import { ProjectVersion } from "@app/hooks/api/workspace/types"; -// import { ProjectVersion } from "@app/hooks/api/workspace/types"; import { FolderBreadCrumbs } from "./components/FolderBreadCrumbs"; import { ProjectIndexSecretsSection } from "./components/ProjectIndexSecretsSection"; import { SecretOverviewFolderRow } from "./components/SecretOverviewFolderRow"; @@ -274,60 +274,65 @@ export const SecretOverviewPage = () => {
-
-

Secrets Overview

-

- Inject your secrets using - - Infisical CLI - - , - - Infisical API - - , - - Infisical SDKs - - , and - - more - - . -

-
+
+
+

Secrets Overview

+

+ Inject your secrets using + + Infisical CLI + + , + + Infisical API + + , + + Infisical SDKs + + , and + + more + + . +

+
+ {currentWorkspace?.version === ProjectVersion.V1 && ( + + )} -
- -
- setSearchFilter(e.target.value)} - leftIcon={} - /> +
+ +
+ setSearchFilter(e.target.value)} + leftIcon={} + /> +