From 266d8b77751a4c22ed43e79574a17d39a866cc96 Mon Sep 17 00:00:00 2001 From: Vladyslav Matsiiako Date: Mon, 9 Jan 2023 23:06:10 -0800 Subject: [PATCH] Fixed the bug with creating projects --- frontend/components/basic/Layout.tsx | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/frontend/components/basic/Layout.tsx b/frontend/components/basic/Layout.tsx index ef8eda727..48399cdce 100644 --- a/frontend/components/basic/Layout.tsx +++ b/frontend/components/basic/Layout.tsx @@ -19,7 +19,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import getOrganizations from "~/pages/api/organization/getOrgs"; import getOrganizationUserProjects from "~/pages/api/organization/GetOrgUserProjects"; import getOrganizationUsers from "~/pages/api/organization/GetOrgUsers"; -import checkUserAction from "~/pages/api/userActions/checkUserAction"; +import getUser from "~/pages/api/user/getUser"; import addUserToWorkspace from "~/pages/api/workspace/addUserToWorkspace"; import createWorkspace from "~/pages/api/workspace/createWorkspace"; import getWorkspaces from "~/pages/api/workspace/getWorkspaces"; @@ -39,6 +39,7 @@ import Listbox from "./Listbox"; interface LayoutProps { children: React.ReactNode; } +const crypto = require("crypto"); export default function Layout({ children }: LayoutProps) { const router = useRouter(); @@ -83,12 +84,31 @@ export default function Layout({ children }: LayoutProps) { }); const newWorkspaceId = newWorkspace._id; + const randomBytes = crypto.randomBytes(16).toString("hex"); + const PRIVATE_KEY = String(localStorage.getItem("PRIVATE_KEY")); + + const myUser = await getUser(); + + const { ciphertext, nonce } = encryptAssymmetric({ + plaintext: randomBytes, + publicKey: myUser.publicKey, + privateKey: PRIVATE_KEY, + }) as { ciphertext: string; nonce: string }; + + await uploadKeys( + newWorkspaceId, + myUser._id, + ciphertext, + nonce + ); + if (addAllUsers) { + console.log('adding other users') const orgUsers = await getOrganizationUsers({ orgId: tempLocalStorage("orgData.id"), }); orgUsers.map(async (user: any) => { - if (user.status == "accepted") { + if (user.status == "accepted" && user.email != myUser.email) { const result = await addUserToWorkspace( user.user.email, newWorkspaceId